- - PR -
jakarta-POI Excelのエラー
1
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-06-15 10:22
現在jakarta-POIを使用しているのですが
Excelのエラーが出て困っています。 生成されたExcelのMBが100以上の時や Sheetを30シート以上生成した時にExcelサイドで これ以上フォントを生成できません。みたいなエラーが出てしまい ファイルを開けなくなってしまいます。 プログラムに問題があるのか、POIのせいなのか分かりません。 このような状態がどんな時に発生するか分かりますか? またPOIではどのくらいの容量まで生成できるか教えて頂けないでしょうか? 宜しくお願いします。 | ||||||||
|
投稿日時: 2004-06-15 10:53
少し前の話なので、最近どうなっているか良く知らないのですが、多分変わって
いないだろうということで。 フォント情報は、HSSFFontインスタンス一個に対してファイル上で一個作成され てしまいます。HSSFCellに対して必要になるたびにHSSFCellStyleやHSSFFontイン スタンスを生成してしまうと、あっという間に許容上限を超えてしまいます。 (JakartaサイトのFAQに載っていた覚えがありますが、どこだったか忘れました・・・) 同一の属性値であるフォントやスタイルについては、インスタンスを生成せずに 「以前に生成したインスタンス」への参照を利用するようにしてください。 私の場合、以前に生成したフィールドが同値であるインスタンスを検索して使用 するようなコレクションクラスを作ってしのぎました。 「不便だからどうにかしてくれ!」とメールを送ったことがあるのですが「APIの 整備は当分するつもりが無い。我慢せい。」と突っぱねられたのですよね^^; そろそろどうにかなっているかな? | ||||||||
|
投稿日時: 2004-06-15 11:09
返信ありがとうございます。
HSSFFont,HSSFStyleに関しては別クラスで一度 生成したものをHashMapに格納して繰り返し使用するようにしていますが それでもダメなんでしょうか? | ||||||||
|
投稿日時: 2004-06-15 12:08
う、そうなるとわかりません。ごめんなさい。 単純に1ファイルあたりのフォント数の上限超えでしょうか?64とか256とか・・・
以前そのあたりのテストをしたときは、200シート作成できました。サイズの テストはちょっと覚えていません・・・ | ||||||||
|
投稿日時: 2004-06-15 12:21
>う、そうなるとわかりません。ごめんなさい。
>単純に1ファイルあたりのフォント数の上限超えでしょうか?64とか256とか・・・ フォント数をどのくらい使用しているか調べる方法ってありますか? どのくらい生成されているか確認したいので。。。 [ メッセージ編集済み 編集者: umi 編集日時 2004-06-15 12:22 ] | ||||||||
|
投稿日時: 2004-06-15 13:20
POI開発チームで、デバッグ用?にBiffViewerというツールを提供しています。
http://jakarta.apache.org/poi/apidocs/org/apache/poi/hssf/dev/BiffViewer.html ファイル名を引数に渡すと、Excelファイル内部のWorkbookオブジェクトが内部で どのようなRecordリストを持っているかをテキスト形式で標準出力に吐き出して くれますので、それを見ると簡単にわかるかと思います。 Workbookのメンバをリフレクションやデバッガで覗く、という手もありますね。 | ||||||||
|
投稿日時: 2004-06-15 14:35
BiffViewerはPOIが対応していない機能を調べてくれるものだったと
思いますが、この使用の仕方がわかりません。。。 もう少し詳しくお願いします。 | ||||||||
|
投稿日時: 2004-06-15 15:22
話の元ネタはどこでしょうか?どういう流れでそういうツールがあるという話 になるのか、ちょっと知りたい…^^; APIリファレンスを見ていただければわかるとおりmainメソッドがありますので、 コマンドラインから"java"コマンドで起動できます。ファイル名を第一引数に渡 してください。 | ||||||||
1
