mirror of
https://github.com/apache/poi.git
synced 2026-02-27 20:40:08 +08:00
Bug 66598: Fix invalid loop-condition when cleaning up CTCells
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1909808 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
a647cc97e7
commit
720027879f
@ -608,7 +608,7 @@ public class XSSFRow implements Row, Comparable<XSSFRow> {
|
||||
}
|
||||
|
||||
// remove any remaining illegal references in _rows.cArray
|
||||
while(cArrayOrig.length > _cells.size()) {
|
||||
while(_row.getCArray().length > _cells.size()) {
|
||||
_row.removeC(_cells.size());
|
||||
}
|
||||
}
|
||||
|
||||
@ -21,12 +21,22 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
import static org.junit.jupiter.api.Assertions.assertSame;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
|
||||
import org.apache.poi.common.usermodel.HyperlinkType;
|
||||
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||
import org.apache.poi.ss.tests.usermodel.BaseTestXRow;
|
||||
import org.apache.poi.ss.usermodel.*;
|
||||
import org.apache.poi.ss.usermodel.Cell;
|
||||
import org.apache.poi.ss.usermodel.CellCopyContext;
|
||||
import org.apache.poi.ss.usermodel.CellCopyPolicy;
|
||||
import org.apache.poi.ss.usermodel.CellType;
|
||||
import org.apache.poi.ss.usermodel.Hyperlink;
|
||||
import org.apache.poi.ss.usermodel.RichTextString;
|
||||
import org.apache.poi.ss.usermodel.Row;
|
||||
import org.apache.poi.ss.usermodel.Sheet;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.poi.xssf.XSSFITestDataProvider;
|
||||
import org.apache.poi.xssf.XSSFTestDataSamples;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@ -426,4 +436,44 @@ public final class TestXSSFRow extends BaseTestXRow {
|
||||
XSSFWorkbook wb3 = XSSFTestDataSamples.writeOutAndReadBack(wb1);
|
||||
assertEquals(CellType.BLANK, wb3.getSheet("Sheet1").getRow(0).getCell(1).getCellType(), "Cell should be blank");
|
||||
}
|
||||
|
||||
@Test
|
||||
void createHeaderOnce() throws IOException {
|
||||
Workbook wb = new XSSFWorkbook();
|
||||
fillData(1, wb.createSheet("sheet123"));
|
||||
writeToFile(wb);
|
||||
}
|
||||
|
||||
@Test
|
||||
void createHeaderTwice() throws IOException {
|
||||
Workbook wb = new XSSFWorkbook();
|
||||
fillData(0, wb.createSheet("sheet123"));
|
||||
writeToFile(wb);
|
||||
}
|
||||
|
||||
@Test
|
||||
void createHeaderThreeTimes() throws IOException {
|
||||
Workbook wb = new XSSFWorkbook();
|
||||
Sheet sheet = wb.createSheet("sheet123");
|
||||
fillData(1, sheet);
|
||||
fillData(0, sheet);
|
||||
fillData(0, sheet);
|
||||
writeToFile(wb);
|
||||
}
|
||||
|
||||
private void fillData(int startAtRow, Sheet sheet) {
|
||||
Row header = sheet.createRow(0);
|
||||
for (int rownum = startAtRow; rownum < 2; rownum++) {
|
||||
header.createCell(0).setCellValue("a");
|
||||
|
||||
Row row = sheet.createRow(rownum);
|
||||
row.createCell(0).setCellValue("a");
|
||||
}
|
||||
}
|
||||
|
||||
private void writeToFile(Workbook wb) throws IOException {
|
||||
try (OutputStream fileOut = new ByteArrayOutputStream()) {
|
||||
wb.write(fileOut);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user