我希望在Win服务器上的批处理文件中将XLSX转换为CSV。
服务器没有安装Excel,因此像CreateObject(“Excel.Application”)这样的VB命令将无效。
如果我可以在不安装任何第三方工具的情况下完成此操作,那将是理想的选择。 我看到一些选项涉及在服务器上安装Office数据连接并连接到Excel的副本,但我希望尽可能少地对服务器进行更改。
我想知道是否还有其他选择? 感谢
答案 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)