POI 書式設定数でエラー

これが最近発生しやがった(;´∀`)

これだから外の奴らはヽ(`Д´)ノプンプン


色々調べたらわかるけど
Excel 2003(xls) は 4000
Excel 2007(xlsx) 以降は 64000

以上のセル書式の異なる組み合わせがブックに含まれる場合に発生する(´・ω・`)


POIでもエラーメッセージによく出るんだよな(´・ω・`)



The maximum number of cell styles was exceeded.

とか

The maximum number of cell styles was exceeded.You can define up to 4000 styles in a .xls workbook


とかが出てくると思うよ(´・ω・`)


ちなみに書式数の取り方は
org.apache.poi.ss.usermodel.Workbook#getNumCellStyles();

で取れるお(^ω^)



プログラム側ではなるべく書式を設定せず、文字だけを入力する方法をとるべきだお(´・ω・`)
んでPOIでエラーを出ないようにする方法は2つ(´・ω・`)


①予め全てに書式を設定する

一覧を帳票に出力ってなった場合は最大数が決まってると思うので、全部に線を引いたり、書式を設定する。


その後に不要となった列やセルを削除する。


デメリットとしては容量が増える為、編集前のエクセルを開く処理が若干遅くなる(; ・`д・´)




②POIで書式をコピーする。


これが定番だがコピーの仕方を間違えるを4000を超えてしまう(´・ω・`)




これだと確か問題なかったはずw
// セルタイプのコピー
newCell.setCellType(oldCell.getCellType());

// スタイルのコピー
newCell.setCellStyle(oldCell.getCellStyle());





0 件のコメント:

コメントを投稿