我需要一种编程方式来将下载的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用户可以轻松实现的任何操作。
谢谢!
*已针对特异性/简化进行了编辑
答案 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会显示错误消息,但仍会自行进行转换。