Fix bug 57828, shifting more than one commit per row did not work.
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1674975 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
dfe1c74dff
commit
d1385bbe1b
@ -2596,11 +2596,13 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
|
|||||||
// i.e. when shifting down, start from down and go up, when shifting up, vice-versa
|
// i.e. when shifting down, start from down and go up, when shifting up, vice-versa
|
||||||
SortedMap<XSSFComment, Integer> commentsToShift = new TreeMap<XSSFComment, Integer>(new Comparator<XSSFComment>() {
|
SortedMap<XSSFComment, Integer> commentsToShift = new TreeMap<XSSFComment, Integer>(new Comparator<XSSFComment>() {
|
||||||
public int compare(XSSFComment o1, XSSFComment o2) {
|
public int compare(XSSFComment o1, XSSFComment o2) {
|
||||||
int row1 = new CellReference(o1.getCTComment().getRef()).getRow();
|
int row1 = o1.getRow();
|
||||||
int row2 = new CellReference(o2.getCTComment().getRef()).getRow();
|
int row2 = o2.getRow();
|
||||||
|
|
||||||
if(row1 == row2) {
|
if(row1 == row2) {
|
||||||
return 0;
|
// ordering is not important when row is equal, but don't return zero to still
|
||||||
|
// get multiple comments per row into the map
|
||||||
|
return o1.hashCode() - o2.hashCode();
|
||||||
}
|
}
|
||||||
|
|
||||||
// when shifting down, sort higher row-values first
|
// when shifting down, sort higher row-values first
|
||||||
|
@ -332,4 +332,38 @@ public final class TestXSSFSheetShiftRows extends BaseTestSheetShiftRows {
|
|||||||
wb.removeSheetAt(sn);
|
wb.removeSheetAt(sn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testBug57828_OnlyOneCommentShiftedInRow() throws IOException {
|
||||||
|
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("57828.xlsx");
|
||||||
|
XSSFSheet sheet = wb.getSheetAt(0);
|
||||||
|
|
||||||
|
Comment comment1 = sheet.getCellComment(2, 1);
|
||||||
|
assertNotNull(comment1);
|
||||||
|
|
||||||
|
Comment comment2 = sheet.getCellComment(2, 2);
|
||||||
|
assertNotNull(comment2);
|
||||||
|
|
||||||
|
Comment comment3 = sheet.getCellComment(1, 1);
|
||||||
|
assertNull("NO comment in (1,1) and it should be null", comment3);
|
||||||
|
|
||||||
|
sheet.shiftRows(2, 2, -1);
|
||||||
|
|
||||||
|
comment3 = sheet.getCellComment(1, 1);
|
||||||
|
assertNotNull("Comment in (2,1) moved to (1,1) so its not null now.", comment3);
|
||||||
|
|
||||||
|
comment1 = sheet.getCellComment(2, 1);
|
||||||
|
assertNull("No comment currently in (2,1) and hence it is null", comment1);
|
||||||
|
|
||||||
|
comment2 = sheet.getCellComment(1, 2);
|
||||||
|
assertNotNull("Comment in (2,2) should have moved as well because of shift rows. But its not", comment2);
|
||||||
|
|
||||||
|
// OutputStream stream = new FileOutputStream("/tmp/57828.xlsx");
|
||||||
|
// try {
|
||||||
|
// wb.write(stream);
|
||||||
|
// } finally {
|
||||||
|
// stream.close();
|
||||||
|
// }
|
||||||
|
|
||||||
|
wb.close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
BIN
test-data/spreadsheet/57828.xlsx
Normal file
BIN
test-data/spreadsheet/57828.xlsx
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user