2015-08-26 108 views
0

我得到了這個問題,導出大量的Excel單元格到一個.txt文件,它必然需要UTF-8格式。因此我做了一個VBScript,它由一個批處理文件執行,它完全做它應該做的事情(儘管它創建了一個UTF-16文件)。Excel通過腳本導出到.txt

Set file = fso.OpenTextFile(FILE, 2, True, -1) 

在本文檔中提及的是,-1會生成一個Unicode文件,我敢肯定,這僅限於UTF-16。

我現在的問題是:我錯過了什麼,或者用VBScript實現這一點是不可能的?有更容易的方法嗎?除此之外:這個平臺是獨立的嗎?

+0

VBScript僅支持ANSCII和UTF-16我相信。 – Soulfire

回答

2

FileSystemObject不支持UTF-8,但有ADODB.Stream對象。

... 

'Note: wb is the variable holding your workbook object 
'Save worksheet as Unicode text ... 
wb.SaveAs "C:\utf16.txt", 42 

'... read the Unicode text into a variable ... 
Set fso = CreateObject("Scripting.FileSystemObject") 
txt = fso.OpenTextFile("C:\utf16.txt", 1, False, -1).ReadAll 

'... and export it as UTF-8 text. 
Set stream = CreateObject("ADODB.Stream") 
stream.Open 
stream.Type  = 2 'text 
stream.Position = 0 
stream.Charset = "utf-8" 
stream.WriteText txt 
stream.SaveToFile "C:\utf8.txt", 2 
stream.Close 

... 
+0

讓我來看看:儘管創建的文件的格式是這樣的,但是使用流對象,我可以將UTF8字符串寫入我的文本文件中?我也可以追加這一行嗎? – buffo

+0

@buffo我不會推薦。將工作表從Excel導出到Unicode編碼的文本文件,然後使用'FileSystemObject'讀取該Unicode文件,並使用ADODB.Stream對象將其寫入UTF-8編碼文件。 –

+0

比[this](http://stackoverflow.com/a/4221256/1505120)更容易嗎? – pnuts