【问题标题】:Is there a way to convert a CSV into XLS on Mac with VBscript code? [closed]有没有办法在 Mac 上使用 VBscript 代码将 CSV 转换为 XLS? [关闭]
【发布时间】:2019-05-09 22:15:04
【问题描述】:

我需要一种编程方式来重复将下载的 CSV 转换为 XLS,基本上保持文件的相同名称并且每次都替换 XLS。我在 Mac 10.12 上工作,并且精通命令行,但没有找到无需下载第三方库的简单方法。我找到了一个答案,它给了我一个可以在 PowerShell 上使用的 VBscript,但我需要一些帮助。

我已经下载了 PowerShell,并且可以在终端中使用它。我有这个来自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 用户来说非常容易。

谢谢!

*为具体/简化而编辑

【问题讨论】:

  • 您知道 Excel 可以轻松打开 CSV 文件,不是吗?如果您仍想创建 Excel 文件,您可以尝试 Doug Finke ImportExcel 的出色模块。
  • CreateObject() 是 COM 自动化,这是一种仅限 Windows 的技术; Excel 的那种自动化在 Mac 上是行不通的。我怀疑 VBScript 也可以在 Mac 上运行。 (VBA 中的 Microsoft Office 脚本不是 VBScript)。使用 AppleScript 自动化 Excel 可能是可能的,但 Olaf 对 ImportExcel 的建议可能是一条不错的前进路线。

标签: excel powershell csv command-line vbscript


【解决方案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 会在打开文件时显示错误消息,但仍会自行进行转换。

【讨论】:

  • 感谢您的回复!如果我可以在终端中做到这一点,那将是理想的。我已经下载了 gnumeric(说它是 1.12.44 版),但是当我尝试使用 ssconvert 的任何命令时,即ssconvert data.csv data.xls 我得到了同样的错误:TypeError: string indices must be integers, not unicode。错误行之前的行是File "/Users/user/.virtualenvs/junk/lib/python2.7/site-packages/spreadsheetconverter/config.py", line 27, in __init__ fields = self.rules['fields'],所以它似乎进入了一个叫做spreadsheetconverter的东西?任何ssconvert 命令都会发生这种情况。
  • 请注意——我在 virtualenv 中安装了gnumeric,但它似乎无法正常工作。当我删除 virtualenv 并运行 ssconvert 命令时,它起作用了。感谢您的帮助!
  • 我很高兴它有帮助:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-14
  • 1970-01-01
  • 2017-07-15
  • 2022-08-12
  • 1970-01-01
  • 2015-07-10
相关资源
最近更新 更多