使用命令行将.CSV转换为.XLSX

时间:2015-07-24 09:04:34

标签: csv command-line vbscript

我正在寻找一种方法,使用命令行将一系列.csv文件批量转换为.xlsx

我尝试了一系列不同的VBScripts,但他们似乎都在将.xlsx转换为.csv,而不是相反。

这是我能找到的最接近的一个,但同样是.xlsx.csv

if WScript.Arguments.Count < 2 Then
    WScript.Echo "Error! Please specify the source path and the destination. Usage: XlsToCsv SourcePath.xls Destination.csv"
    Wscript.Quit
End If
Dim oExcel
Set oExcel = CreateObject("Excel.Application")
Dim oBook
Set oBook = oExcel.Workbooks.Open(Wscript.Arguments.Item(0))
oBook.SaveAs WScript.Arguments.Item(1), 6
oBook.Close False
oExcel.Quit
WScript.Echo "Done"

有什么想法吗?

5 个答案:

答案 0 :(得分:9)

免责声明:我在https://gitlab.com/DerLinkshaender/csv2xlsx

撰写了开源的CSV2XLSX

您可能想尝试上面的外部工具。为什么呢?

优点:

    即使Windows Script Host被阻止,也可以使用
  • 独立于操作系统,因此您可以使用熟悉的工具,在每个操作系统上使用相同的选项集(保存大脑记忆:-))。
  • 无需安装Excel或LibreOffice等,因此您无需担心安装其他模块或语言。
  • 指定多个CSV参数作为命令行参数使工具“SysAdmin-friendly”,因为他们不必通过源代码挖掘。
  • 您甚至可以为csv数据指定行或列范围。
  • xlsx文件格式非常复杂,无需借助办公软件包的安装即可编写它不适合胆小的人。
  • 更适合批量处理,因为该工具可以集成在特定于操作系统的循环逻辑中。
  • 我试图提供一组有用的命令行标记,并考虑到DevOps / SysAdmin,许多现有脚本通过命令行选项缺乏良好的控制。

答案 1 :(得分:8)

只有先决条件是&#34; .csv&#34;必须是文件名中的小写:

Dim file, WB

With CreateObject("Excel.Application")
    On Error Resume Next
    For Each file In WScript.Arguments
        Set WB = .Workbooks.Open(file)
        WB.SaveAs Replace(WB.FullName, ".csv", ".xlsx"), 51
        WB.Close False
    Next    
    .Quit
End With

WScript.Echo "Done!"

答案 2 :(得分:1)

对于Windows,我最近在SuperUser.com上回复了类似的问题。

https://superuser.com/a/1011154/326177

我认为 Total CSV Converter 是功能最多的最便宜的选项。它甚至不需要安装Excel,并且可以将CSV数据输出到JSON,Access,DBF,XML或SQL。

http://www.coolutils.com/TotalCSVConverter

CSVConverter.exe <source> <destination> <options>

答案 3 :(得分:0)

您使用的是Windows还是Linux / Mac?

无论哪种方式,我都可以找到解决方案。

如果没有以下评论的程序,以下是您的问题的解决方案:

https://social.msdn.microsoft.com/Forums/en-US/74df1378-7c0c-4c0f-b174-fa97a5c2969b/convert-csv-to-xlsx?forum=Vsexpressvb

修改 所以这是基本的解决方案:

基本上,您从文件所在的目录应用过滤器(在本例中为xlsx过滤器)。

Nvm我刚刚看到你在Windows上  ./directory --headless --convert-to xlsx:&#34; Calc MS Excel 2007 XML&#34; FILE.CSV

在这种情况下&#34; Calc MS Excel 2007 XML&#34;是过滤器。

适用于单个文件,让我在一秒钟内添加批处理。

答案 4 :(得分:0)

这是我使用NPOI库创建的Windows机器的开源工具,它可以将简单的分隔文件转换为XLS / XLSX转换,而不需要在机器上安装Excel。如果您不想自己构建二进制文件,则二进制文件位于Bin / Debug中。所有必需的库都包含在可执行文件中,因此它可以独立运行。

https://github.com/nmolinos/csv2excel