0

我一直在为 excel 问题苦苦挣扎。我的 excel 文件(2003 版)中有俄语字符,我想将其保存到 csv。但问题是每当我这样做而不是我得到的俄语字符时? ?????。在浏览了各种论坛后,我发现问题出在 MS excel 上。

所以现在我想知道,如果我可以编写一个 VB 脚本,它会从所需的单元格中读取字符串,将它们转换为 UTF-8 编码并将其存储在文本文件中。我在这里有两个问题:

  1. 我的解决方案是否可行?我不知道它是否可以完成?任何指针都会有帮助。我已经通过网络拖网并找不到任何东西。

  2. 由于我对 VB 脚本完全零,请问有人可以帮助我提供示例代码吗?

最重要的是,如果有人知道更好的方法,请告诉我。

谢谢

4

2 回答 2

3

这是一个小 vbscript,它使用 ADO (i) 读取 excel 文件 (ii) 写入 CSV 文件:

option explicit

' Reading Excel Files:
' http://support.microsoft.com/kb/257819

dim CONNECTION1
set CONNECTION1 = WScript.CreateObject("ADODB.CONNECTION")
CONNECTION1.Open "Provider=MICROSOFT.JET.OLEDB.4.0;Data Source=C:\Users\Salman\Desktop\input.xls;Extended Properties=""Excel 8.0;HDR=Yes;"""

dim RECORDSET1
set RECORDSET1 = WScript.CreateObject("ADODB.RECORDSET")
RECORDSET1.open "SELECT * FROM [Sheet1$]", CONNECTION1, 3, 1

' Notes:
' CharacterSet 65001 is UTF-8
' add/remove columns and change datatype to match you excel file

dim CONNECTION2
set CONNECTION2 = WScript.CreateObject("ADODB.CONNECTION")
CONNECTION2.Open "Provider=MICROSOFT.JET.OLEDB.4.0;Data Source=C:\Users\Salman\Desktop\;Extended Properties=""text;HDR=Yes;FMT=Delimited;CharacterSet=65001;"""
CONNECTION2.Execute "CREATE TABLE [output.csv] ([English] VARCHAR(200), [Swedish] VARCHAR(200), [Russian] VARCHAR(200), [Chinese Simplified] VARCHAR(200))"

dim RECORDSET2
set RECORDSET2 = WScript.CreateObject("ADODB.RECORDSET")
RECORDSET2.Open "SELECT * FROM [output.csv]", CONNECTION2, 2, 2

do until RECORDSET1.EOF
    RECORDSET2.AddNew
    dim i
    for i = 0 to RECORDSET1.Fields.Count - 1
        WScript.Echo RECORDSET1.Fields(i).Value
        RECORDSET2.Fields(i).Value = RECORDSET1.Fields(i).Value
    next
    RECORDSET2.Update
    RECORDSET1.MoveNext
loop

示例 Excel 文件内容 (Excel 2003):

English           Swedish            Russian              Chinese Simplified
this should work  Detta bör fungera  это должно работать  这应该工作
this should work  Detta bör fungera  это должно работать  这应该工作
this should work  Detta bör fungera  это должно работать  这应该工作
this should work  Detta bör fungera  это должно работать  这应该工作

CSV 文件内容示例(不带 BOM 的 UTF-8):

"English","Swedish","Russian","Chinese Simplified"
"this should work","Detta bör fungera","это должно работать","这应该工作"
"this should work","Detta bör fungera","это должно работать","这应该工作"
"this should work","Detta bör fungera","это должно работать","这应该工作"
"this should work","Detta bör fungera","это должно работать","这应该工作"

使用 cscript 从命令行运行此脚本:

C:\>cscript export.vbs

注意:您可能会在 64 位 Windows 上遇到以下 ADO 错误:

ADODB.Connection:找不到提供程序。它可能没有正确安装。(错误代码 0x800A0E7A)

此问题的解决方法是在 32 位模式下运行脚本。您可以通过在“运行”对话框中输入以下命令来启动 32 位命令提示符来执行此操作:

%WINDIR%\SysWOW64\cmd.exe

从此命令提示符处执行 cscript 命令。

于 2012-05-14T10:07:26.950 回答
-1

开放式办公室可以做到这一点!尝试将您的 Excel 文件加载到 Open Office 并“另存为”csv 文件。然后您将被要求输入导出文件的编码。选择“Unicode (UTF-8)”。

于 2012-09-13T11:29:56.017 回答