概要
一般的に、帳票機能というと2種類に大別され、行・列が増減したりしない「単票形式」のものと、行・列がデータ数に応じて可変な「一覧形式」のものがありますね。
今回は後者の話。
事象
XSSFSheet#shiftRows
メソッドを使うと、エラーは出ないが最終的に出来たExeclファイルが破損してしまう。
破損していても修復して何とか開けないこともないが、シフト基準位置移行のデータが狂っているようでデータが損失する。
シフト方向の正負とかに関わらないし、実験してみた感じ結合セルの有無や名前定義の有無、それらによるエラーは関係なさげ。
詳細
結論
POI4系
のバグらしい。
正確には、過去に検出・修正された既知のバグだったが、なんやかんやあって再発するようになったらしい。
回避策
今の所、手っ取り早いのは POI3系
で最終バージョンの poi 3.17 を使えば事象が発生しないのは確認した。
修正版
は、まだリリースされてないけど、つい最近の 2019/07/01 に事象自体は修正されたとのこと、ありがてぇ、ありがてぇ。
はぇー、すっごいタイムリー。
次のバージョンでリリース乗ってくれれば最新版にすれば解決されそうだけど、現状はまだ無理っすね。