From 3d1375deee56ea921c35e86bcb8fe3e511fb80aa Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Tue, 2 Jul 2024 12:58:37 +0000 Subject: [bug-69154] XSSF: Shifting columns with merged regions generates an error about overlapping regions git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1918838 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/ss/usermodel/helpers/ColumnShifter.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'poi') diff --git a/poi/src/main/java/org/apache/poi/ss/usermodel/helpers/ColumnShifter.java b/poi/src/main/java/org/apache/poi/ss/usermodel/helpers/ColumnShifter.java index c6d97f3ff6..cbd6f784c9 100644 --- a/poi/src/main/java/org/apache/poi/ss/usermodel/helpers/ColumnShifter.java +++ b/poi/src/main/java/org/apache/poi/ss/usermodel/helpers/ColumnShifter.java @@ -105,16 +105,16 @@ public abstract class ColumnShifter extends BaseRowColShifter { // build a range of the columns that are overwritten, i.e. the target-area, but without // columns that are moved along final CellRangeAddress overwrite; - if(n > 0) { + if (n > 0) { // area is moved down => overwritten area is [endColumn + n - movedColumns, endColumn + n] final int firstCol = Math.max(endColumn + 1, endColumn + n - movedColumns); final int lastCol = endColumn + n; - overwrite = new CellRangeAddress(0, 0, firstCol, lastCol); + overwrite = new CellRangeAddress(merged.getFirstRow(), merged.getLastRow(), firstCol, lastCol); } else { // area is moved up => overwritten area is [startColumn + n, startColumn + n + movedColumns] final int firstCol = startColumn + n; final int lastCol = Math.min(startColumn - 1, startColumn + n + movedColumns); - overwrite = new CellRangeAddress(0, 0, firstCol, lastCol); + overwrite = new CellRangeAddress(merged.getFirstRow(), merged.getLastRow(), firstCol, lastCol); } // if the merged-region and the overwritten area intersect, we need to remove it @@ -122,12 +122,12 @@ public abstract class ColumnShifter extends BaseRowColShifter { } public void shiftColumns(int firstShiftColumnIndex, int lastShiftColumnIndex, int step){ - if(step > 0){ + if (step > 0) { for (Row row : sheet) if(row != null) row.shiftCellsRight(firstShiftColumnIndex, lastShiftColumnIndex, step); } - else if(step < 0){ + else if (step < 0) { for (Row row : sheet) if(row != null) row.shiftCellsLeft(firstShiftColumnIndex, lastShiftColumnIndex, -step); -- cgit v1.2.3