]> source.dussan.org Git - poi.git/commitdiff
[bug-65943] support rich text in SXSSFWorkbook (only when shared string table is...
authorPJ Fanning <fanningpj@apache.org>
Wed, 9 Mar 2022 20:12:37 +0000 (20:12 +0000)
committerPJ Fanning <fanningpj@apache.org>
Wed, 9 Mar 2022 20:12:37 +0000 (20:12 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1898803 13f79535-47bb-0310-9956-ffa450edef68

poi-ooxml/src/test/java/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java

index e1ff742684c5d27c2723bacce32ce2914b25a079..089bbfb1b9a602ac35bf6875ff9cddacc4ec68b7 100644 (file)
@@ -160,47 +160,12 @@ public final class TestSXSSFWorkbook extends BaseTestXWorkbook {
 
     @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());
+        testUseSharedStringsTableWithRichText(false);
+    }
 
-                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);
+            }
+        }
+    }
+
 }