]> source.dussan.org Git - poi.git/commitdiff
[bug-65595] Strip colour formatting in headers and footers
authorPJ Fanning <fanningpj@apache.org>
Fri, 24 Sep 2021 15:05:10 +0000 (15:05 +0000)
committerPJ Fanning <fanningpj@apache.org>
Fri, 24 Sep 2021 15:05:10 +0000 (15:05 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1893599 13f79535-47bb-0310-9956-ffa450edef68

poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFSheet.java
poi/src/main/java/org/apache/poi/hssf/usermodel/HeaderFooter.java
test-data/spreadsheet/HeaderFooterComplexFormats.xlsx [new file with mode: 0644]

index 54229938e40c4f71de5fb1eb9d90c223a85ed57e..5c6f1670f1dd40ffa48df2cb741cbcc31eae68d0 100644 (file)
@@ -158,6 +158,26 @@ public final class TestXSSFSheet extends BaseTestXSheet {
         }
     }
 
+    @Test
+    void headerFooterWithFormat() throws IOException {
+        try (XSSFWorkbook wb1 = XSSFTestDataSamples.openSampleWorkbook("HeaderFooterComplexFormats.xlsx")) {
+            XSSFOddHeader hdr;
+            XSSFOddFooter ftr;
+
+            XSSFSheet s1 = wb1.getSheetAt(0);
+            assertNotNull(s1.getHeader());
+            assertNotNull(s1.getFooter());
+            hdr = (XSSFOddHeader) s1.getHeader();
+            ftr = (XSSFOddFooter) s1.getFooter();
+
+            // The following is how the header/footer appear in Excel (with formatting removed)
+            hdr.setAreFieldsStripped(true);
+            assertEquals("Header Bold RedUnderlined Bolditalics", hdr.getCenter());
+            ftr.setAreFieldsStripped(true);
+            assertEquals("Footer ArialBlue TahomaBoldGreen", ftr.getCenter());
+        }
+    }
+
     @Test
     void getAllHeadersFooters() throws IOException {
         try (XSSFWorkbook workbook = new XSSFWorkbook()) {
@@ -2015,4 +2035,5 @@ public final class TestXSSFSheet extends BaseTestXSheet {
             assertEquals("/xl/drawings/vmlDrawing2.vml", vml2.getPackagePart().getPartName().getName());
         }
     }
+
 }
index 90b9556923ff8a04194572c2f59a438458432d7a..5bd1b3d0be8f94795370fe01270b78d08a370109 100644 (file)
@@ -295,9 +295,11 @@ public abstract class HeaderFooter implements org.apache.poi.ss.usermodel.Header
         }
 
         // Now do the tricky, dynamic ones
-        // These are things like font sizes and font names
+        // These are things like font sizes, font names and colours
         text = text.replaceAll("\\&\\d+", "");
         text = text.replaceAll("\\&\".*?,.*?\"", "");
+        text = text.replaceAll("\\&K[\\dA-F]{6}", "");
+        text = text.replaceAll("\\&K[\\d]{2}[+][\\d]{3}", "");
 
         // All done
         return text;
diff --git a/test-data/spreadsheet/HeaderFooterComplexFormats.xlsx b/test-data/spreadsheet/HeaderFooterComplexFormats.xlsx
new file mode 100644 (file)
index 0000000..337f425
Binary files /dev/null and b/test-data/spreadsheet/HeaderFooterComplexFormats.xlsx differ