POIでセルの大量コピー時「書式が多すぎる」エラーの解決方法
2010/12/10 10:09Update
POIを使ってExcelに出力する際に、「セルの書式が多すぎるため、書式を追加できません」のようなメッセージを出てしまい後ろの書式が設定されないことはしばしばあります。
原因
「セルの書式が多すぎるため、書式を追加できません」というメッセージは、
ブックに含まれるセルの書式の組み合わせが約 4,000 を超える場合に発生します。
詳細はこちら
から確認できます。解決方法としては、ひと言で「書式設定の組み合わせ数を減少させる」です。
NGコード例
HSSFWorkbook hssfWorkbook = ... //適応元セル HSSFCell srcCell = ... //適応先セル HSSFCell destCell = ... //適応元のセルの書式を取得 HSSFCellStyle srcHSSFCellStyle = srcCell.getCellStyle(); //元のセルのスタイルを参照して新しいセルの書式を設定(ここが問題) HSSFCellStyle destHSSFCellStyle = hssfWorkbook.createCellStyle(); //新しいセルの書式作成 destHSSFCellStyle.setAlignment(srcHSSFCellStyle.getAlignment()); destHSSFCellStyle.setBorderBottom(srcHSSFCellStyle .getBorderBottom()); destHSSFCellStyle.setBorderLeft(srcHSSFCellStyle .getBorderLeft()); ... //その他書式設定 destCell.setCellStyle(destHSSFCellStyle); //書式設定
以上は実際に「セルの書式が多すぎるため、書式を追加できません」のメッセージを出させたコード例(抜粋)です。
OKコード例
上のNGコードを次のように改造したら、メッセージが出なくなりました。
//適応元セル HSSFCell srcCell = ... //適応先セル HSSFCell destCell = ... //適応先セルの書式に適応元セルの書式をそのまま適応(設定)します。 destCell.setCellStyle(srcCell.getCellStyle());
比較してみれば明白ですね、「書式を適応したいセルに新しい書式を新規作成せずに、適応元セルの書式をそのままにすればよい、即ち、できるだけ既存の書式を利用する」ということですね。
Sponsored Link
Comments
- Relative Articles
- Java開発及び実行環境の構築 | Linux篇 - (2008/08/31 20:34)
- Java開発及び実行環境の構築 | Windows篇 - (2008/08/31 21:18)
- 5分でJava Hello World! - (2008/08/31 22:13)
- Java言語の制御構文 - 条件分岐if/else/else if - (2008/10/01 21:30)
- Java言語の繰り返し制御構文 - for文 - (2008/10/03 18:22)
- Java言語の繰り返し制御構文 - do ... while文 - (2008/10/03 21:23)
- Java言語の繰り返し制御構文 - while文 - (2008/10/03 21:32)
- Java言語の基礎 - javacコマンドによるコンパイル - (2008/10/10 17:58)
- Java アクセス修飾子概要 - (2008/10/29 18:31)
- Javaアノテーション機能 概要 - (2009/02/12 13:06)