関です。お世話になっております。
以前投稿してから大分経ちましたが、検討状況はいかがでしょうか。
それで、こちらでも検討してみたのですが、BlockRowRepeatParamParserの410行目の以下のif文について、
// 子パーサによって縦に増えた分、子パーサのタグ位置より前の列にセルを挿入
if (defaultFromCellColIndex != result.getDefaultColumnIndex() && result.getRowIndex() > result.getDefaultRowIndex()) { //410行目
CellRangeAddress preRangeAddress = new CellRangeAddress(
blockEndRowIndex + 1,
blockEndRowIndex + (result.getRowIndex() - result.getDefaultRowIndex()),
blockStartColIndex,
targetCol - 1);
以下のように「&& targetCol > blockStartColIndex」を追加すれば回避できました。
// 子パーサによって縦に増えた分、子パーサのタグ位置より前の列にセルを挿入
if (defaultFromCellColIndex != result.getDefaultColumnIndex() && result.getRowIndex() > result.getDefaultRowIndex()
&& targetCol > blockStartColIndex //この行を追加
) {
new CellRangeAddress(int firstRow, int lastRow, int firstCol, int lastCol) では、
3番目と4番目の引数の関係が「lastCol < firstCol」となる場合に IllegalArgumentException が発生します。
その為、予めif文に「&& targetCol > blockStartColIndex」と終了列が開始列より大きい場合、
と定義しておいても特に問題ないかと思います。(範囲が逆転している場合は処理不要なはずですので。)
お手数をおかけしますが BlockRowRepeatParamParser の上記の問題について対応をお願い致します。
(他に影響があるようでしたら別の対応方法でも構いません。)
2016年6月14日火曜日 13時13分47秒 UTC+9 seki: