POIを使用せずにxlsxをjavaで読み込む

POI便利っすよねー。

Excelデータの操作をJavaで行うなら必需品です。

だがしかーし!使えない時もある!

POIが悪いんじゃない。使うなという企業が悪い。
開発環境に"自由"にライブラリを設置できない場合、ネイティブでやるっきゃない。

"自由"とは責任をもってやること

ターゲットをxlsx形式のみにしたら比較的容易にできる。
Office Open XMLなのでDOM解析すれば良い。


手順は下記の通り。

  1. xlsxファイルをZipInputStreamで読む
  2. sheetN.xmlとsharedString.xmlを解析して該当セルと中の値をマッチさせる(vタグ内の数値が何番目のsiタグの値かを指す)

以上。

下記サイトでとても綺麗に纏めてくださってる。

Excel XLSX Parser | Chris' Creative Musings

ここで読み込めるのは固定値として設定してる値。
式はcalcChain、オートシェイプはdrawingにある。

こうゆうのはPOI使って解決させたいところだが、内容を知るいい機会でもある。こうゆうことは積極的にやるべきだなー。