2014-10-27 102 views
-1

我希望在Win服務器上的批處理文件中將XLSX轉換爲CSV。在命令行上將Excel文件轉換爲CSV

服務器沒有安裝Excel,所以像CreateObject(「Excel.Application」)這樣的VB命令將不起作用。

這將是理想的,如果我可以做到這一點,而無需安裝任何第三方工具。 我已經看到一些選項,包括在服務器上安裝Office數據連接並連接到Excel副本,但我希望儘可能少地對服務器進行更改。

我想知道是否有其他選項? 感謝

回答

1

使用ADO和 「SELECT ... INTO ...外部數據庫中...」:

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

+0

請注意,在64位系統上,您需要使用32位解釋器(來自'C:\ Windows \ SysWOW64')運行此操作。 – 2014-10-28 10:12:28