Bug 57838: Also remove comments when removing a row
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1746062 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
a2bd714e55
commit
505e695099
@ -409,7 +409,6 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
|
|||||||
/**
|
/**
|
||||||
* Verify that none of the merged regions intersect a multi-cell array formula in this sheet
|
* Verify that none of the merged regions intersect a multi-cell array formula in this sheet
|
||||||
*
|
*
|
||||||
* @param region
|
|
||||||
* @throws IllegalStateException if candidate region intersects an existing array formula in this sheet
|
* @throws IllegalStateException if candidate region intersects an existing array formula in this sheet
|
||||||
*/
|
*/
|
||||||
private void checkForMergedRegionsIntersectingArrayFormulas() {
|
private void checkForMergedRegionsIntersectingArrayFormulas() {
|
||||||
@ -1386,8 +1385,8 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
|
|||||||
* Rows between startRow and endRow that haven't been created are not included
|
* Rows between startRow and endRow that haven't been created are not included
|
||||||
* in result unless createRowIfMissing is true
|
* in result unless createRowIfMissing is true
|
||||||
*
|
*
|
||||||
* @param startRow the first row number in this sheet to return
|
* @param startRowNum the first row number in this sheet to return
|
||||||
* @param endRow the last row number in this sheet to return
|
* @param endRowNum the last row number in this sheet to return
|
||||||
* @param createRowIfMissing
|
* @param createRowIfMissing
|
||||||
* @return All rows between startRow and endRow, inclusive
|
* @return All rows between startRow and endRow, inclusive
|
||||||
* @throws IllegalArgumentException if startRowNum and endRowNum are not in ascending order
|
* @throws IllegalArgumentException if startRowNum and endRowNum are not in ascending order
|
||||||
@ -1880,6 +1879,15 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
|
|||||||
int idx = _rows.headMap(row.getRowNum()).size();
|
int idx = _rows.headMap(row.getRowNum()).size();
|
||||||
_rows.remove(row.getRowNum());
|
_rows.remove(row.getRowNum());
|
||||||
worksheet.getSheetData().removeRow(idx);
|
worksheet.getSheetData().removeRow(idx);
|
||||||
|
|
||||||
|
// also remove any comment located in that row
|
||||||
|
if(sheetComments != null) {
|
||||||
|
for (CellAddress ref : getCellComments().keySet()) {
|
||||||
|
if (ref.getRow() == idx) {
|
||||||
|
sheetComments.removeComment(ref);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -18,14 +18,9 @@
|
|||||||
package org.apache.poi.xssf.usermodel;
|
package org.apache.poi.xssf.usermodel;
|
||||||
|
|
||||||
import static org.apache.poi.xssf.usermodel.XSSFRelation.NS_SPREADSHEETML;
|
import static org.apache.poi.xssf.usermodel.XSSFRelation.NS_SPREADSHEETML;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.*;
|
||||||
import static org.junit.Assert.assertNotNull;
|
|
||||||
import static org.junit.Assert.assertSame;
|
|
||||||
import static org.junit.Assert.fail;
|
|
||||||
|
|
||||||
import java.io.FileOutputStream;
|
import java.io.*;
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.OutputStream;
|
|
||||||
|
|
||||||
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
|
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
|
||||||
import org.apache.poi.ss.usermodel.BaseTestCellComment;
|
import org.apache.poi.ss.usermodel.BaseTestCellComment;
|
||||||
@ -314,4 +309,28 @@ public final class TestXSSFComment extends BaseTestCellComment {
|
|||||||
wb.close();
|
wb.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void bug57838DeleteRowsWthCommentsBug() throws IOException {
|
||||||
|
Workbook wb = XSSFTestDataSamples.openSampleWorkbook("57838.xlsx");
|
||||||
|
Sheet sheet=wb.getSheetAt(0);
|
||||||
|
Comment comment1 = sheet.getCellComment(new CellAddress(2, 1));
|
||||||
|
assertNotNull(comment1);
|
||||||
|
Comment comment2 = sheet.getCellComment(new CellAddress(2, 2));
|
||||||
|
assertNotNull(comment2);
|
||||||
|
Row row=sheet.getRow(2);
|
||||||
|
assertNotNull(row);
|
||||||
|
|
||||||
|
sheet.removeRow(row); // Remove row from index 2
|
||||||
|
|
||||||
|
row=sheet.getRow(2);
|
||||||
|
assertNull(row); // Row is null since we deleted it.
|
||||||
|
|
||||||
|
comment1 = sheet.getCellComment(new CellAddress(2, 1));
|
||||||
|
assertNull(comment1); // comment should be null but will fail due to bug
|
||||||
|
comment2 = sheet.getCellComment(new CellAddress(2, 2));
|
||||||
|
assertNull(comment2); // comment should be null but will fail due to bug
|
||||||
|
|
||||||
|
wb.close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
BIN
test-data/spreadsheet/57838.xlsx
Normal file
BIN
test-data/spreadsheet/57838.xlsx
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user