Author: fanningpj
Date: Wed Mar 9 20:06:59 2022
New Revision: 1898801
URL: http://svn.apache.org/viewvc?rev=1898801&view=rev
Log:
[bug-65943] support rich text in SXSSFWorkbook (only when shared string table
is enabled)
Modified:
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFCreationHelper.java
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SheetDataWriter.java
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java
Modified:
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFCreationHelper.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFCreationHelper.java?rev=1898801&r1=1898800&r2=1898801&view=diff
==============================================================================
---
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFCreationHelper.java
(original)
+++
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFCreationHelper.java
Wed Mar 9 20:06:59 2022
@@ -55,13 +55,11 @@ public class SXSSFCreationHelper impleme
@Override
public XSSFRichTextString createRichTextString(String text) {
- LOG.atInfo().log("SXSSF doesn't support Rich Text Strings, any
formatting information will be lost");
return new XSSFRichTextString(text);
}
@Override
public SXSSFFormulaEvaluator createFormulaEvaluator() {
-
return new SXSSFFormulaEvaluator(wb);
}
Modified:
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SheetDataWriter.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SheetDataWriter.java?rev=1898801&r1=1898800&r2=1898801&view=diff
==============================================================================
---
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SheetDataWriter.java
(original)
+++
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SheetDataWriter.java
Wed Mar 9 20:06:59 2022
@@ -38,6 +38,7 @@ import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.FormulaError;
+import org.apache.poi.ss.usermodel.RichTextString;
import org.apache.poi.ss.util.CellReference;
import org.apache.poi.util.CodepointsUtil;
import org.apache.poi.util.Removal;
@@ -322,7 +323,7 @@ public class SheetDataWriter implements
}
case STRING: {
if (_sharedStringSource != null) {
- XSSFRichTextString rt = new
XSSFRichTextString(cell.getStringCellValue());
+ RichTextString rt = cell.getRichStringCellValue();
int sRef = _sharedStringSource.addSharedStringItem(rt);
writeAttribute("t", STCellType.S.toString());
Modified:
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java?rev=1898801&r1=1898800&r2=1898801&view=diff
==============================================================================
---
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java
(original)
+++
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java
Wed Mar 9 20:06:59 2022
@@ -51,6 +51,10 @@ import org.apache.poi.ss.util.CellRefere
import org.apache.poi.xssf.SXSSFITestDataProvider;
import org.apache.poi.xssf.XSSFTestDataSamples;
import org.apache.poi.xssf.model.SharedStringsTable;
+import org.apache.poi.xssf.usermodel.DefaultIndexedColorMap;
+import org.apache.poi.xssf.usermodel.XSSFColor;
+import org.apache.poi.xssf.usermodel.XSSFFont;
+import org.apache.poi.xssf.usermodel.XSSFRichTextString;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Disabled;
@@ -153,6 +157,51 @@ public final class TestSXSSFWorkbook ext
}
}
}
+
+ @Test
+ void useSharedStringsTableWithRichText() throws Exception {
+ try (SXSSFWorkbook wb = new SXSSFWorkbook(null, 10, false, 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);
+ }
+ }
+ }
@Test
void addToExistingWorkbook() throws IOException {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]