excel - 我可以使用 UTF-8 无 BOM 导出 Excel 数据吗?

标签 excel vbscript utf-8

我通过Excel宏(VBScript)导出Microsoft Excel数据。 因为文件是lua脚本,所以我将其导出为UTF-8。 我在 Excel 中制作 UTF-8 的唯一方法是使用 adodb.stream 像这样

set fileLua = CreateObject("adodb.stream")
fileLua.Type = 2
fileLua.Mode = 3
fileLua.Charset = "UTF-8"
fileLua.Open
fileLua.WriteText("test")
fileLua.SaveToFile("Test.lua")
fileLua.flush
fileLua.Close

我想从 Test.lua 中消除 BOM,但我不知道如何做。 (因为 Test.lua 有一些 unicode 文本,所以我必须使用 UTF-8 格式。)

你知道如何在Excel文件中制作无BOM的UTF-8文件吗? 提前致谢。

最佳答案

我也有同样的问题:必须将数据从Excel(Office 2003,VBA6.5)导出到UTF-8编码的文件。从你的问题中找到了答案!在我的示例中,我还使用 boost 的(谢谢!)答案中的技巧#2 删除了 BOM。我没有让#1 工作,也从未尝试过#3。

Sub WriteUTF8WithoutBOM()
    Dim UTFStream As Object
    Set UTFStream = CreateObject("adodb.stream")
    UTFStream.Type = adTypeText
    UTFStream.Mode = adModeReadWrite
    UTFStream.Charset = "UTF-8"
    UTFStream.LineSeparator = adLF
    UTFStream.Open
    UTFStream.WriteText "This is an unicode/UTF-8 test.", adWriteLine
    UTFStream.WriteText "First set of special characters: öäåñüûú€", adWriteLine
    UTFStream.WriteText "Second set of special characters: qwertzuiopõúasdfghjkléáûyxcvbnm\|Ä€Í÷×äðÐ[]í³£;?¤>#&@{}<;>*~¡^¢°²`ÿ´½¨¸0", adWriteLine

    UTFStream.Position = 3 'skip BOM

    Dim BinaryStream As Object
    Set BinaryStream = CreateObject("adodb.stream")
    BinaryStream.Type = adTypeBinary
    BinaryStream.Mode = adModeReadWrite
    BinaryStream.Open

    'Strips BOM (first 3 bytes)
    UTFStream.CopyTo BinaryStream

    'UTFStream.SaveToFile "d:\adodb-stream1.txt", adSaveCreateOverWrite
    UTFStream.Flush
    UTFStream.Close

    BinaryStream.SaveToFile "d:\adodb-stream2.txt", adSaveCreateOverWrite
    BinaryStream.Flush
    BinaryStream.Close
End Sub

ADO Stream Object reference我用过。

关于excel - 我可以使用 UTF-8 无 BOM 导出 Excel 数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4143524/

相关文章:

vbscript - 在Jenkins中通过批处理脚本执行VBS

encoding - CDO.Message 编码问题

php - 在 PHP 中使用 BOM 将字符串编码为 UTF-8

R&Excel : Creating Pivot Tables & Slicers

excel - .copyfromrecordset 没有响应

sql - 为什么我不能在 Excel 2010 中对 ODBCConnection 对象的 SQL ('[a-z]' 查询中使用字符范围 'LIKE' )?

sharepoint - 将文件上传到 SharePoint DocLib 的 VBScript

mysql - 修复损坏的 UTF8 字符 MYSQL

php - 从 MySQL 获取汉字

Excel按列值突出显示整行