mirror of
https://github.com/apache/poi.git
synced 2026-02-27 20:40:08 +08:00
[bug-65943] support rich text in SXSSFWorkbook (only when shared string table is enabled)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1898803 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
552471e578
commit
bdd7e65d85
@ -160,47 +160,12 @@ public final class TestSXSSFWorkbook extends BaseTestXWorkbook {
|
||||
|
||||
@Test
|
||||
void useSharedStringsTableWithRichText() throws Exception {
|
||||
try (SXSSFWorkbook wb = new SXSSFWorkbook(null, 10, false, true)) {
|
||||
testUseSharedStringsTableWithRichText(false);
|
||||
}
|
||||
|
||||
SharedStringsTable sss = wb.getSharedStringSource();
|
||||
|
||||
assertNotNull(sss);
|
||||
|
||||
XSSFFont redFont = new XSSFFont();
|
||||
redFont.setColor(new XSSFColor(new java.awt.Color(241,76,93), new DefaultIndexedColorMap()));
|
||||
|
||||
Row row = wb.createSheet("S1").createRow(0);
|
||||
|
||||
row.createCell(0).setCellValue("A");
|
||||
row.createCell(1).setCellValue("B");
|
||||
XSSFRichTextString rts = new XSSFRichTextString("A");
|
||||
rts.applyFont(redFont);
|
||||
row.createCell(2).setCellValue(rts);
|
||||
|
||||
try (XSSFWorkbook xssfWorkbook = SXSSFITestDataProvider.instance.writeOutAndReadBack(wb)) {
|
||||
sss = wb.getSharedStringSource();
|
||||
assertEquals(3, sss.getUniqueCount());
|
||||
assertTrue(wb.dispose());
|
||||
|
||||
Sheet sheet1 = xssfWorkbook.getSheetAt(0);
|
||||
assertEquals("S1", sheet1.getSheetName());
|
||||
assertEquals(1, sheet1.getPhysicalNumberOfRows());
|
||||
row = sheet1.getRow(0);
|
||||
assertNotNull(row);
|
||||
Cell cell = row.getCell(0);
|
||||
assertNotNull(cell);
|
||||
assertEquals("A", cell.getStringCellValue());
|
||||
cell = row.getCell(1);
|
||||
assertNotNull(cell);
|
||||
assertEquals("B", cell.getStringCellValue());
|
||||
cell = row.getCell(2);
|
||||
assertNotNull(cell);
|
||||
assertEquals("A", cell.getStringCellValue());
|
||||
XSSFRichTextString outputRichTextString = (XSSFRichTextString) cell.getRichStringCellValue();
|
||||
XSSFFont outputFont = outputRichTextString.getFontAtIndex(0);
|
||||
assertEquals(redFont, outputFont);
|
||||
}
|
||||
}
|
||||
@Test
|
||||
void useSharedStringsTableWithRichTextAndCompression() throws Exception {
|
||||
testUseSharedStringsTableWithRichText(true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -569,4 +534,49 @@ public final class TestSXSSFWorkbook extends BaseTestXWorkbook {
|
||||
@Disabled("not implemented")
|
||||
protected void changeSheetNameWithSharedFormulas() {
|
||||
}
|
||||
|
||||
private void testUseSharedStringsTableWithRichText(boolean compressTempFiles) throws Exception {
|
||||
try (SXSSFWorkbook wb = new SXSSFWorkbook(null, 10, compressTempFiles, true)) {
|
||||
|
||||
SharedStringsTable sss = wb.getSharedStringSource();
|
||||
|
||||
assertNotNull(sss);
|
||||
|
||||
XSSFFont redFont = new XSSFFont();
|
||||
redFont.setColor(new XSSFColor(new java.awt.Color(241,76,93), new DefaultIndexedColorMap()));
|
||||
|
||||
Row row = wb.createSheet("S1").createRow(0);
|
||||
|
||||
row.createCell(0).setCellValue("A");
|
||||
row.createCell(1).setCellValue("B");
|
||||
XSSFRichTextString rts = new XSSFRichTextString("A");
|
||||
rts.applyFont(redFont);
|
||||
row.createCell(2).setCellValue(rts);
|
||||
|
||||
try (XSSFWorkbook xssfWorkbook = SXSSFITestDataProvider.instance.writeOutAndReadBack(wb)) {
|
||||
sss = wb.getSharedStringSource();
|
||||
assertEquals(3, sss.getUniqueCount());
|
||||
assertTrue(wb.dispose());
|
||||
|
||||
Sheet sheet1 = xssfWorkbook.getSheetAt(0);
|
||||
assertEquals("S1", sheet1.getSheetName());
|
||||
assertEquals(1, sheet1.getPhysicalNumberOfRows());
|
||||
row = sheet1.getRow(0);
|
||||
assertNotNull(row);
|
||||
Cell cell = row.getCell(0);
|
||||
assertNotNull(cell);
|
||||
assertEquals("A", cell.getStringCellValue());
|
||||
cell = row.getCell(1);
|
||||
assertNotNull(cell);
|
||||
assertEquals("B", cell.getStringCellValue());
|
||||
cell = row.getCell(2);
|
||||
assertNotNull(cell);
|
||||
assertEquals("A", cell.getStringCellValue());
|
||||
XSSFRichTextString outputRichTextString = (XSSFRichTextString) cell.getRichStringCellValue();
|
||||
XSSFFont outputFont = outputRichTextString.getFontAtIndex(0);
|
||||
assertEquals(redFont, outputFont);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user