【发布时间】:2017-01-11 20:36:51
【问题描述】:
我有一个这样的 .xlsx 文件:
sample.xlsx:
Heading C1 C2,01,02 C3 C4
R1 1 4 7 10
R2 2 5 8 11,1
R3 3 6 9,0 12
我想将 sample.xlsx 文件转换为 Output.csv 文件[管道分隔]。
请注意,我不需要任何双引号“C2,01,02”。
输出.csv:
Heading|C1|C2,01,02|C3|C4
R1|1|4|7|10
R2|2|5|8|11,1
R3|3|6|9,0|12
我知道如何使用如下手动步骤生成 Output.csv:
转到控制面板 -> 区域和语言 -> 其他设置 -> 使用管道“|”更新列表分隔符字段。
打开 sample.xlsx -> 另存为 -> 从下拉列表中选择另存为 CSV(逗号分隔)(*.csv)类型。
但我不想手动执行此操作。我想使用命令行实现相同的输出。为此,我参考了这篇文章: Convert XLS to CSV on command line
代码是:
这个 csv 工作得很好,但唯一的问题是它生成逗号分隔的 csv 而不是管道分隔的。
if WScript.Arguments.Count < 2 Then WScript.Echo "Please specify the source and the destination files. Usage: ExcelToCsv <xls/xlsx source file> <csv destination file>" Wscript.Quit End If csv_format = 6 Set objFSO = CreateObject("Scripting.FileSystemObject") src_file = objFSO.GetAbsolutePathName(Wscript.Arguments.Item(0)) dest_file = objFSO.GetAbsolutePathName(WScript.Arguments.Item(1)) Dim oExcel Set oExcel = CreateObject("Excel.Application") Dim oBook Set oBook = oExcel.Workbooks.Open(src_file) oBook.SaveAs dest_file, csv_format oBook.Close False oExcel.Quit
运行上述代码:
XlsToCsv.vbs [sourcexlsFile].xls [输出].csv
我尝试将 csv_format = 6 的值更改为许多其他值,例如 1、2、3...等等。但它没有给出管道分隔的 csv。
请帮忙。
提前致谢。
【问题讨论】:
-
您知道 CSV 是与 Comma S分隔相关的扩展名V价值观?很难有一个以竖线分隔的逗号分隔值文件。
-
除非你破解,否则似乎很难做到:experts-exchange.com/questions/23712758/…。不过,用于后处理文件的 python 解决方案需要 3 或 4 行。
-
@Ken White:好的,那我可以得到一个对应的Output.txt文件吗?
-
@Jean-François Fabre:你能发布你的黑客解决方案吗?我也可以使用 python 脚本。我想要的只是将 xlsx 转换为管道分隔的 csv 的任务应该是自动化的。
-
我在上面。是时候写一些python代码了……
标签: vb.net excel windows csv vbscript