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

cra*_*les 7 csv vbscript command-line

我正在寻找一种方法来批量转换一系列.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"
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Arm*_*ius 11

免责声明:我已经在https://gitlab.com/DerLinkshaender/csv2xlsx上以开放源代码的形式提供了CSV2XLSX

您可能想尝试像上面那样的外部工具.为什么?

好处:

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

  • @Balmipour 我增强了该工具。现在有 FontName、FontSize 以及用于通配符/批量处理的文件掩码等选项,包括对 UTF-8 以外的其他编码的支持 (2认同)
  • @user121391 现在可以使用其他编码,看看新版本 (2认同)

Sam*_*Sam 8

唯一的先决条件是文件名中的".csv"必须是小写:

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!"
Run Code Online (Sandbox Code Playgroud)