実際にはこれを 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/