JavaScriptでExcelファイルを作る
先に断っておきますが、拡張子xlsxであるOffice Open XML Spreadsheetです。いわゆるExcel 97-2003形式(拡張子xls)を期待された方、すみません。
ウェブブラウザ上で動作するJavaScriptでExcelブックを作るプログラムを書いてみました。
Google Chrome 10.0, Safari 5.0.4, Firefox 4.0, Firefox 3.6.16で正常に動作しました。ただし、SafariとFirefoxでは、ダウンロードのたびにファイル名を指定する設定とすることをお薦めします。そうでない場合、ファイルに拡張子が付かないです(Excelの入っていないPCではGoogle Chromeも同じ結果になるのかもしれません)。
Opera 11.01では、期待通りのファイルが生成されず、Excelで開こうとすると「修復しますか?」と聞かれてしまいます(一応「はい」を選ぶと開けます)。Internet Explorer 8と9では動作しませんでした。
IEで動かない理由はData URIからのファイルがダウンロードできないためです。Operaでだめな理由は、XMLSerializerの動きがほかと違うためのようです。
なお、OpenOffice.orgでは開けなかったという報告を受けております。Excelが出力するデータと比べ、かなり省略しているためと思います。
ご存じの方も多いでしょうが、Office Open XMLはXMLファイルをZIPで固めた形式です。そのため、話の上では最低限XML操作のライブラリとZIPを作るライブラリがあれば作れることになります。はじめは、WSH上でやろうとしたのですが、「Data URIがあればウェブブラウザ上で実現できる!」と考えました。
なお、以下のライブラリを使用しました。
- JSZip
- JavaScriptでZIPを生成するライブラリです。ただし、JavaScriptでZIPを作ってData URIでダウンロードができること、すなわち「これはいける」という確信を与えてくれたのは「JavaScript 内で無圧縮 ZIP を作って Data URI を生成するライブラリを作りました – IT戦記」でした。あわせて感謝です。
- linq.js
- コレクション操作系ライブラリです。.NET FrameworkのLINQ to Objectの移植です。個人的には、JavaScriptではこれがないと何も書く気が起きません。
スポンサード リンク |
この記事のカテゴリ
- JavaScript ⇒ JavaScriptでExcelファイルを作る