mirror of https://github.com/apache/poi.git
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
170fa46359
commit
0fdbc396e4
|
@ -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
|
||||
*
|
||||
* @param region
|
||||
* @throws IllegalStateException if candidate region intersects an existing array formula in this sheet
|
||||
*/
|
||||
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
|
||||
* in result unless createRowIfMissing is true
|
||||
*
|
||||
* @param startRow the first row number in this sheet to return
|
||||
* @param endRow the last row number in this sheet to return
|
||||
* @param startRowNum the first row number in this sheet to return
|
||||
* @param endRowNum the last row number in this sheet to return
|
||||
* @param createRowIfMissing
|
||||
* @return All rows between startRow and endRow, inclusive
|
||||
* @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();
|
||||
_rows.remove(row.getRowNum());
|
||||
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;
|
||||
|
||||
import static org.apache.poi.xssf.usermodel.XSSFRelation.NS_SPREADSHEETML;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertSame;
|
||||
import static org.junit.Assert.fail;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.io.*;
|
||||
|
||||
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
|
||||
import org.apache.poi.ss.usermodel.BaseTestCellComment;
|
||||
|
@ -314,4 +309,28 @@ public final class TestXSSFComment extends BaseTestCellComment {
|
|||
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();
|
||||
}
|
||||
}
|
||||
|
|
Binary file not shown.
Loading…
Reference in New Issue