【问题标题】:Excel export to .txt via scriptExcel 通过脚本导出到 .txt
【发布时间】:2015-08-26 12:52:04
【问题描述】:

我遇到了将大量 Excel 单元格导出到 .txt 文件的问题,该文件必须采用 UTF-8 格式。因此,我制作了一个 VBScript,它由一个批处理文件执行,它完全完成了它应该做的事情(尽管它创建了一个 UTF-16 文件)。

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

在文档中提到 -1 将生成一个 Unicode 文件,我很确定这仅限于 UTF-16。

我现在的问题是:我是否遗漏了什么,或者用 VBScript 完全不可能实现这一点?有没有更简单的方法?除此之外:这个平台是独立的吗?

【问题讨论】:

  • 我相信VBScript只支持ANSCII和UTF-16。

标签: excel utf-8 vbscript


【解决方案1】:

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

...

【讨论】:

  • 让我明白这一点:使用流对象,我能够将 UTF8 字符串写入我的文本文件,尽管创建文件的格式如何?我也可以在后面加上一行吗?
  • @buffo 我不建议这样做。将工作表从 Excel 导出到 Unicode 编码的文本文件,然后使用 FileSystemObject 读取该 Unicode 文件并使用 ADODB.Stream 对象将其写入 UTF-8 编码文件。
  • @pnuts 该答案描述的是手动转换,而不是脚本转换。
  • 到目前为止,谢谢 Ansgar,我会尝试一下,这听起来很合理。最后一个问题:如此编写的 VBScript 是否可以在 Linux 系统上执行?
  • @buffo 没有。据我所知,没有适用于 Linux 的 VBScript 解释器。不过,您可以通过recode 转换导出的 Unicode 文件。
猜你喜欢
  • 2012-10-26
  • 2013-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-09
  • 1970-01-01
  • 2017-05-17
相关资源
最近更新 更多