SpreadSheetMLによるexcelファイル出力

とりあえず、使っています。具体的な開発手順は↓。

  1. 雛形となるファイルを用意し、XMLスプレッドシート形式で保存する。
  2. 保存したファイルに、xsltスタイルシートタグを埋め込む。
  3. 変換元XMLをDOMでコリコリ作る。
  4. そのDOMオブジェクトに対して作ったスタイルシートを適用し、SpreadSheetML形式に変換。
  5. 出力する。

利点としては、

  • SpreadSheetMLは、excelファイルの全てを記述できるらしい。
    • POIは微妙に使いにくい。数値セルの取り方とか。
  • 変換元XMLファイルの使いまわしが可能。
    • ajax化とか。ファイルが重いのが難。
    • といいつつ、重くて面倒なのであんまり活用できていない。

課題としては、

  • SpreadSheetMLの情報が少な過ぎる。
    • ファイルの中を読めば読めるから、何とかなる。
      • ちょっと詰まったのが、Tableタグの最大行数(ExpandedRowCount)と最大列数(ExpandedColumnCount)の属性指定が必要なこと。計算が面倒な場合、大きな数字を入れても一応大丈夫っぽい。
  • DOMオブジェクトを作るのがかなり面倒で、処理も重い。
  • xsltもちょっと面倒。
  • excelのバグなのか、たまにうまくいかない。
    • 印刷形式を、縦*1、横*nと出来ないとか。