在命令行上将Excel文件转换为CSV

时间:2014-10-27 21:38:01

标签: excel command-line vbscript

我希望在Win服务器上的批处理文件中将XLSX转换为CSV。

服务器没有安装Excel,因此像CreateObject(“Excel.Application”)这样的VB命令将无效。

如果我可以在不安装任何第三方工具的情况下完成此操作,那将是理想的选择。 我看到一些选项涉及在服务器上安装Office数据连接并连接到Excel的副本,但我希望尽可能少地对服务器进行更改。

我想知道是否还有其他选择? 感谢

1 个答案:

答案 0 :(得分:1)

使用ADO和" SELECT ... INTO ... IN外部数据库FROM ...":

  Dim goFS    : Set goFS  = CreateObject("Scripting.FileSystemObject")
  Dim sTDir   : sTDir     = resolvePath("..\data\ExcelCsv2")
  Dim sXFSpec : sXFSpec   = goFS.BuildPath(sTDir, "xls.xls")
  Dim sTFiNa  : sTFiNa    = "csv.csv"
  Dim sTFSpec : sTFSpec   = goFS.BuildPath(sTDir, sTFiNa)
  If goFS.FileExists(sTFSpec) Then goFS.DeleteFile sTFSpec
  Dim oDb     : Set oDb   = CreateObject("ADODB.Connection")
  oDb.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sXFSpec & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"
  WScript.Echo sXFSpec
  WScript.Echo oDb.Execute("SELECT * FROM Demo").GetString(2, , vbTab, vbCrLf)
  oDb.Execute "SELECT * INTO [" & sTFiNa & "] IN '" & sTDir & "' 'Text;' FROM Demo"
  WScript.Echo sTFSpec
  WScript.Echo oDb.Execute("SELECT * FROM [" & sTFiNa & "] IN '" & sTDir & "' 'Text;'").GetString(2, , vbTab, vbCrLf)
  oDb.Close

输出:

E:\trials\SoTrials\answers\8328305\data\ExcelCsv2\xls.xls
1       1,1     10.12.2011      text elm 1
2       2,2     11.12.2011      text elm 2
3       4,4     12.12.2011      text elm 3

E:\trials\SoTrials\answers\8328305\data\ExcelCsv2\csv.csv
1       1,1     10.12.2011      text elm 1
2       2,2     11.12.2011      text elm 2
3       4,4     12.12.2011      text elm 3

(参见this answer

相关问题