有没有一种方法可以在Mac上使用VBscript代码将CSV转换为XLS?

时间:2019-05-09 22:15:04

标签: excel powershell csv command-line vbscript

我需要一种编程方式来将下载的CSV重复转换为XLS,基本上保持文件名不变,并且每次都仅替换XLS。我在Mac 10.12上工作,并且对命令行非常了解,但是还没有找到无需下载第三方库的简单方法。我找到了一个可以给我一个可以在PowerShell上使用的VB脚本的答案,但是我需要一些帮助。

我已经下载了PowerShell,并且可以在Terminal中使用它。我有another StackOverflow question的脚本:

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!"

使用自变量执行此脚本(在PowerShell中)的命令是什么?

我尝试了各种执行命令,但总是得到CommandNotFoundException,这可能是因为我做错了。我的理想结果是,Desktop/data.csv可以反复成为Desktop/data.xls,无论是使用此脚本还是Mac用户可以轻松实现的任何操作。

谢谢!

*已针对特异性/简化进行了编辑

1 个答案:

答案 0 :(得分:1)

我认为Mac上没有本机解决方案可以做到这一点。 我所知道的最简单的解决方案是使用Gnumeric,这是一种具有终端界面的开源电子表格。

要使用Homebrew安装Gnumeric:

brew install gnumeric

然后您可以在终端中使用

for f in *.csv; do ssconvert $f ${f%.csv}.xls; done

如果需要使用Powershell,这也应该可以工作:

gci *.csv | %{ssconvert $_ ($_.BaseName + ".xls")} 

您也可以按照建议使用ImportExcel模块,但据我所知,它将仅按要求转换为.xlsx,而不转换为.xls:

Install-Module -Name ImportExcel -RequiredVersion 5.4.2 
gci *.csv | %{Import-Csv $_ | Export-Excel ($_.basename + ".xlsx")}

或者,您可以仅将扩展名从.csv更改为.xls,打开文件时Excel会显示错误消息,但仍会自行进行转换。