- PR -

jakarta-POI Excelのエラー

1
投稿者投稿内容
umi
会議室デビュー日: 2004/06/15
投稿数: 4
投稿日時: 2004-06-15 10:22
現在jakarta-POIを使用しているのですが
Excelのエラーが出て困っています。
生成されたExcelのMBが100以上の時や
Sheetを30シート以上生成した時にExcelサイドで
これ以上フォントを生成できません。みたいなエラーが出てしまい
ファイルを開けなくなってしまいます。
プログラムに問題があるのか、POIのせいなのか分かりません。
このような状態がどんな時に発生するか分かりますか?
またPOIではどのくらいの容量まで生成できるか教えて頂けないでしょうか?
宜しくお願いします。
シュン
ぬし
会議室デビュー日: 2004/01/06
投稿数: 328
お住まい・勤務地: 東京都
投稿日時: 2004-06-15 10:53
少し前の話なので、最近どうなっているか良く知らないのですが、多分変わって
いないだろうということで。
フォント情報は、HSSFFontインスタンス一個に対してファイル上で一個作成され
てしまいます。HSSFCellに対して必要になるたびにHSSFCellStyleやHSSFFontイン
スタンスを生成してしまうと、あっという間に許容上限を超えてしまいます。
(JakartaサイトのFAQに載っていた覚えがありますが、どこだったか忘れました・・・)
同一の属性値であるフォントやスタイルについては、インスタンスを生成せずに
「以前に生成したインスタンス」への参照を利用するようにしてください。

私の場合、以前に生成したフィールドが同値であるインスタンスを検索して使用
するようなコレクションクラスを作ってしのぎました。
「不便だからどうにかしてくれ!」とメールを送ったことがあるのですが「APIの
整備は当分するつもりが無い。我慢せい。」と突っぱねられたのですよね^^;
そろそろどうにかなっているかな?
umi
会議室デビュー日: 2004/06/15
投稿数: 4
投稿日時: 2004-06-15 11:09
返信ありがとうございます。
HSSFFont,HSSFStyleに関しては別クラスで一度
生成したものをHashMapに格納して繰り返し使用するようにしていますが
それでもダメなんでしょうか?
シュン
ぬし
会議室デビュー日: 2004/01/06
投稿数: 328
お住まい・勤務地: 東京都
投稿日時: 2004-06-15 12:08
引用:

umiさんの書き込み (2004-06-15 11:09) より:
返信ありがとうございます。
HSSFFont,HSSFStyleに関しては別クラスで一度
生成したものをHashMapに格納して繰り返し使用するようにしていますが
それでもダメなんでしょうか?




う、そうなるとわかりません。ごめんなさい。
単純に1ファイルあたりのフォント数の上限超えでしょうか?64とか256とか・・・

引用:

生成されたExcelのMBが100以上の時や
Sheetを30シート以上生成した時



以前そのあたりのテストをしたときは、200シート作成できました。サイズの
テストはちょっと覚えていません・・・
umi
会議室デビュー日: 2004/06/15
投稿数: 4
投稿日時: 2004-06-15 12:21
>う、そうなるとわかりません。ごめんなさい。
>単純に1ファイルあたりのフォント数の上限超えでしょうか?64とか256とか・・・

フォント数をどのくらい使用しているか調べる方法ってありますか?
どのくらい生成されているか確認したいので。。。


[ メッセージ編集済み 編集者: umi 編集日時 2004-06-15 12:22 ]
シュン
ぬし
会議室デビュー日: 2004/01/06
投稿数: 328
お住まい・勤務地: 東京都
投稿日時: 2004-06-15 13:20
POI開発チームで、デバッグ用?にBiffViewerというツールを提供しています。

http://jakarta.apache.org/poi/apidocs/org/apache/poi/hssf/dev/BiffViewer.html

ファイル名を引数に渡すと、Excelファイル内部のWorkbookオブジェクトが内部で
どのようなRecordリストを持っているかをテキスト形式で標準出力に吐き出して
くれますので、それを見ると簡単にわかるかと思います。

Workbookのメンバをリフレクションやデバッガで覗く、という手もありますね。
umi
会議室デビュー日: 2004/06/15
投稿数: 4
投稿日時: 2004-06-15 14:35
BiffViewerはPOIが対応していない機能を調べてくれるものだったと
思いますが、この使用の仕方がわかりません。。。
もう少し詳しくお願いします。

シュン
ぬし
会議室デビュー日: 2004/01/06
投稿数: 328
お住まい・勤務地: 東京都
投稿日時: 2004-06-15 15:22
引用:

BiffViewerはPOIが対応していない機能を調べてくれるものだった



話の元ネタはどこでしょうか?どういう流れでそういうツールがあるという話
になるのか、ちょっと知りたい…^^;


APIリファレンスを見ていただければわかるとおりmainメソッドがありますので、
コマンドラインから"java"コマンドで起動できます。ファイル名を第一引数に渡
してください。
1

スキルアップ/キャリアアップ(JOB@IT)