0

文内の複数の単語を置き換えるスクリプトがあります。

現在のスクリプトは次のとおりです:
http://jsfiddle.net/2z3b4/

これをさらに一歩進めて、Excel シートの置換単語のリストをループできるようにしたいと思います。文はいくつかの単語を変更するため、理想的には複数の列から単語を引き出す必要があります

つまり、置換する word1 = 列 A1 置換する word2 = 列 B1

その後、次の列に移動し始めます

 word1 to be replaced = column A2
 word2 to be replaced = column B2

これらの値をプルして置き換えた後、ページに出力を返したいと思います。

a.) Excel シートから値を取得するにはどうすればよいですか?
b.) Excel シートですべての列をループし、完了したら停止するにはどうすればよいですか??
c.) 別のページに出力を返すにはどうすればよいですか?

4

2 に答える 2

1

Excel シートから値を取得する必要がある場合は、Javascript とは別の言語を使用することを検討する必要があると思います。おそらく、代わりに Excel 内で VBA を使用しますか?

于 2012-09-28T20:47:43.453 に答える
0

実際にはこれを javascript で行うことができます。Excel 2007 以降のドキュメントであれば、それほど難しくありません。多くのステップとあいまいさだけです。2003年以下の場合、バイナリファイルの読み取りに実際に役立つJSライブラリが不明なため、少し問題がある可能性があります。ともかく...

jszipを取得します。これにより、Excel 2007 以降のファイルを解凍できます (実際には、Excel 2007 以降のファイルに含まれているのは XML ファイルの束だけです)。

IE を気にせず、クライアント ブラウザが最新の状態であることが期待される場合は、FileReader API を使用できます ( http://caniuse.com/#feat=filereaderを参照)。IE が気になる場合は、ファイルの内容を読み取り、externalInterface を介して JavaScript に送信するフラッシュ プロジェクトが世の中にあると確信しています。または、自分で装備することもできます。または、ファイルを iframe に「アップロード」して、base64 でエンコードされたファイルの内容を「エコー」で出力し、それを jszip に送り込むこともできます。

ファイルの内容を読み取れるようになったら、jszip を使用してファイルの内容を開きます。new JSZip(zipDataBinary, {base64:false});

テキストを置き換えるだけなので、ほとんどの場合、sharedStrings.xml ファイルに集中できます。

zipFile = new JSZip(zipDataBinary, {base64:false});
var sharedStringFile= zipFile.file(/sharedStrings\.xml/);

さて、簡単なピージー -

var newData = sharedStringFile.asText().replace(/* and all the stuff you want replaced, or in a loop, or whatever.. */);

ここで注意すべき重要なことは、Excel 2007 以降のファイルのほぼすべての文字列がこの sharedStrings.xml ファイルに保持されているということです。Excel ファイルのサイズを最適化するためにいくつかの作業が行われ、文字列データは最も重要なファイルの 1 つです。スプレッドシートでよく重複するデータの断片。したがって、「これはセルです!」というセル A1 がある場合、実際には次のように表されます。

<c r="A1" t="s">
    <v>1</v>
</c>

「1」は、sharedStrings.xml ファイル内の文字列のインデックスです。とにかく..

終わったら、

zipFile.file(sharedStringFile.name, newData); 

これにより、zip ファイルの内容が更新されます。これで、ある種の「エコー」メカニズムを使用してサーバーに送信するか、「Downloadify」を使用してユーザーがダウンロードできるようにすることができます。または、実際にそれを読み込んでページに表示したい場合は..もう少し複雑です。

zip ファイルを次のようにパックします。

var sendThisDataSomewhere = zipFile.generate({base64: false});

そして、恥知らずなプラグインとして、私が取り組んできたプロジェクトからこれらすべてを理解しました - http://excelbuilderjs.com/

于 2012-09-29T09:33:26.590 に答える