正确地将XLSX转换为CSV

时间:2012-08-16 14:59:10

标签: csv xlsx file-conversion

这个问题与here描述的问题非常相似。但是我需要横向进行,我的问题出现在 date 。我在Mac上。

This是我的.xlsx文档的图片。我有很多条目,比如前三行中的条目,我想将它们转换为CSV作为最后三行。但我的问题是:

  • 2012-08-16(A1)成为41137(A4)
  • 我的会议从08:00到 09:00是01:00小时(见H1和I1和J1)变得一团糟 - ,0,333333333333333,0,375,
  • 我的会议从09:00到10:00有 与上面的问题相同,只是杂乱的数字 不同。

我的最终目标是将我的.xlsx时间表导出到toggl

P.S。可能导致真实问题的小问题:

  • A1 2012-08-16成为16-aug-12
  • J1 01:00:00变成01:00以及08:00:00变成08:00和09:00变成08:00:00依旧。

1 个答案:

答案 0 :(得分:8)

最简单的解决方案是简单地“另存为...”并选择CSV作为文件类型。

我猜你是想以某种自动方式做到这一点。如果以下假设成立:

  • 您使用的是Windows平台
  • 已安装Excel

将“XLSX”转换为“CSV”的最简单方法是使用一些VB脚本:

Set objArgs = WScript.Arguments
InputName = objArgs(0)
OutputName = objArgs(1)
Set objExcel = CreateObject("Excel.application")
objExcel.application.visible=false
objExcel.application.displayalerts=false
set objExcelBook = objExcel.Workbooks.Open(InputName)
objExcelBook.SaveAs OutputName, 23
objExcel.Application.Quit
objExcel.Quit

将其调用为:

wscript script.vbs C:\...\file.xlsx C:\...\file.csv

<强>更新 看一下使用Perl脚本执行转换的posting

更新2 显然,VBA代码在路径方​​面很挑剔。相对于文档目录解析不合格的路径。因此,为了获得可重现的结果,请使用输入和输出文件的完整路径。