0

Excel の問題でしばらく苦労しています。Excel ファイル (2003 バージョン) にロシア語の文字が含まれており、それを csv に保存したいのですが、ロシア語の文字の代わりにそれを行うたびに問題が発生します。 ???????. さまざまなフォーラムを調べたところ、問題は MS Excel にあることがわかりました。

そこで、必要なセルから文字列を読み取り、それらを UTF-8 エンコーディングに変換してテキスト ファイルに保存する VB スクリプトを作成できるかどうか疑問に思っていました。ここに2つの問題があります:

  1. 私の解決策は実現可能ですか?それができるかどうかわかりませんか?どんなポインタでも完全に役立ちます。私はネットをトロールしましたが、何も見つかりませんでした。

  2. 私は VB スクリプトの知識がまったくないので、サンプル コードを教えてください。

最も重要なことは、誰かがそれを行うためのより良い方法を知っている場合は、私に知らせてください.

ありがとう

4

2 に答える 2

3

これは、ADO を使用して (i) Excel ファイルを読み取り (ii) CSV ファイルに書き込む小さな vbscript です。

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 ファイルに「名前を付けて保存」してみてください。次に、エクスポートされたファイルのエンコーディングを入力するよう求められます。「ユニコード(UTF-8)」を選択します。

于 2012-09-13T11:29:56.017 に答える