ClassCastExceptionが発生

271 views
Skip to first unread message

aik...@gmail.com

unread,
Oct 3, 2017, 8:59:00 AM10/3/17
to excella
はじめまして。aikgrです。
Excella Reportを使用しており、解決方法が思いつかないエラーが発生していますので、
ご相談させてください。

●バージョン
excella-reports-1.6

●事象
エクセルで下記のように繰返しを定義しており、
特定の件数まではエラー無く出力できるが、特定件数を超えるとエラー内容が出力される。
(テンプレートはExcel2003ですが、特定件数時点で16000行程度であり、Excelの最大の行数を超えていることはありません)

$BR[]{XXXXX,fromCell=1:0,toCell=79:88}

●エラー内容 
Caused by: Sheet[XXXXX] Cell[0,0] Message[java.lang.ClassCastException: org.apache.poi.hssf.record.FormatRecord cannot be cast to org.apache.poi.hssf.record.ExtendedFormatRecord] Cause[java.lang.ClassCastException: org.apache.poi.hssf.record.FormatRecord cannot be cast to org.apache.poi.hssf.record.ExtendedFormatRecord]
    at org.bbreak.excella.reports.tag.BlockRowRepeatParamParser.parse(BlockRowRepeatParamParser.java:502)
    at org.bbreak.excella.reports.tag.BlockRowRepeatParamParser.parse(BlockRowRepeatParamParser.java:57)
    at org.bbreak.excella.core.SheetParser.parseCell(SheetParser.java:134)
    at org.bbreak.excella.core.SheetParser.parseSheet(SheetParser.java:104)
    at org.bbreak.excella.core.BookController.parseSheet(BookController.java:251)
    at org.bbreak.excella.reports.processor.ReportProcessor.processBook(ReportProcessor.java:182)
    at org.bbreak.excella.reports.processor.ReportProcessor.process(ReportProcessor.java:110)
    ... 43 more
Caused by: java.lang.ClassCastException: org.apache.poi.hssf.record.FormatRecord cannot be cast to org.apache.poi.hssf.record.ExtendedFormatRecord
    at org.apache.poi.hssf.model.InternalWorkbook.getExFormatAt(InternalWorkbook.java:779)
    at org.apache.poi.hssf.usermodel.HSSFCell.getCellStyle(HSSFCell.java:924)
    at org.apache.poi.hssf.usermodel.HSSFCell.getCellStyle(HSSFCell.java:70)
    at org.bbreak.excella.reports.util.ReportsUtil.getBlockCellStyle(ReportsUtil.java:474)
    at org.bbreak.excella.reports.tag.BlockRowRepeatParamParser.parse(BlockRowRepeatParamParser.java:222)

不足している情報があれば教えてください。
よろしくお願い致します。

神園和秀

unread,
Oct 3, 2017, 9:17:28 PM10/3/17
to excella
POIの不具合として上がっているようです。

https://bz.apache.org/bugzilla/show_bug.cgi?id=54443

3.11で修正されているようなので、バージョンを上げてみてはいかがでしょうか。

2017年10月3日火曜日 21時59分00秒 UTC+9 aik...@gmail.com:

aik...@gmail.com

unread,
Oct 5, 2017, 3:09:32 AM10/5/17
to excella
ご回答ありがとうございます。

poiのバージョンを上げたところ、該当のエラーは出なくなりましたが、
Excel出力処理が返ってこなくなる事象が発生し、
poiとExcellaのバージョンの組合せを色々試しているところです。
事象解決したらまたご報告します。

aik...@gmail.com

unread,
Nov 9, 2017, 7:00:24 AM11/9/17
to excella

お世話になります。

上記エラーについて、いまだ解消しておらず、

もし検証のヒント等あればご教示いただきたく存じます。


〇検証1 poiのバージョンアップ

excella-reportspoi
1.6
3.10(当初エラー発生したバージョン)
1.83.13
1.9
3.13
1.10
3.13
1.11
3.16
 
1.8
1.10はいずれも当初と同じエラーとなる。
1.11は性能劣化が発生。
(バージョン
1.6だと明細100件で20秒のところ、1.11では167秒となる。200件以上出力しようとすると、処理が返ってこない)
 

〇検証2 テンプレートの変更

xls形式のテンプレートからxlsx形式のテンプレートに変更 ⇒ 性能が著しく劣化(5分以上待っても処理が返ってこない)


〇環境

Windows10

Office2010

JDK1.7

 

神園和秀

unread,
Nov 10, 2017, 12:58:05 AM11/10/17
to excella
xlsx形式ですと、大量にデータを処理しようとすると遅いです。
現状、Excellaでは解決方法はないと思います。

Excellaは使用できませんが、POIであれば、
SXSSFWorkbookを使用すると、制限はありますが、高速にxlsxで出力することが可能です。

2017年11月9日木曜日 21時00分24秒 UTC+9 aik...@gmail.com:

aik...@gmail.com

unread,
Nov 12, 2017, 8:21:28 PM11/12/17
to excella
POIでの処理見直しは時間的にも厳しそうなので、
顧客とは出力件数の制約を調整しようかと思います。
ありがとうございました。

aik...@gmail.com

unread,
Nov 14, 2017, 5:23:34 AM11/14/17
to excella
一旦〆た後にすみません。

大変初歩的な質問かもしれませんが、
Excel2010で作成した2003形式(.xls)のテンプレートを使用していますが、
Excel2010 であることが問題、ということはないでしょうか。

ファイルのフォーマットが2003形式であればExcel2010でも問題ないと考えているのですが、
リファレンス等見ても2010への対応状況がよくわからず、ご教示ください。

神園和秀

unread,
Nov 14, 2017, 5:26:21 AM11/14/17
to excella
Excel2010での検証が十分ではないかもしれませんが、
Excel2010で作成したので問題ということはないはずです。

2017年11月14日火曜日 19時23分34秒 UTC+9 aik...@gmail.com:

aik...@gmail.com

unread,
Nov 15, 2017, 1:37:44 AM11/15/17
to excella
ご回答いただきましてありがとうございました。
また何かありましたらよろしくお願いいたします。
Reply all
Reply to author
Forward
0 new messages