DbUnit+Excelではまったメモ
はまったメモ1:DbUnit2.4.7 + Apache POI3.6 ではExcelファイルインポート・エクスポート不可
原因
Apache POIの最新バージョンでは、DbUnit2.4.7で使用するメソッドが削除されていたため、動作しなかった。Springベースのユニットテストに DbUnitを組み合わせる方法 や、 Java/Ant/DBをExcelにExportするAntタスクを参考に、Apache POI (いつの間にかJakarta POIから名称変更…) でExcelファイルエクスポート・インポートを試してみた。
しかし、Excelファイルのエクスポート時にNoSuchMethodExceptionが発生した。
調べるうちに見つけたのがこのサイト。
Old versions of POI available for download?
We were using for years the setEncoding method in HSSFCell, as instructed in this Javadoc here:要は、deprecatedであったメソッドが最新のPOIでは削除されており、そのメソッドをDbUnitで使用しているため動作しないようであった。
http://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFCell.html#setCellValue(org.apache.poi.ss.usermodel.RichTextString)
But this setEncoding method mysteriously disappeared in recent POI versions.
対処
試しに、POIの少し古いバージョン poi-bin-3.2-FINAL-20081019.zip のjarファイルに入れ替え、実行したらうまくいった。2014/12/14追記
POIのコードを修正して対処している方の記事を見つけました。
DbUnitをApache POI3.8互換にする - Splash of waters - 2nd. Season