}
}
+ @Test
+ void testHeaderWithAmpersand() throws IOException {
+ try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("AmpersandHeader.xlsx")) {
+ XSSFSheet s = wb.getSheetAt(0);
+ XSSFOddHeader hdr = (XSSFOddHeader) s.getHeader();
+ assertEquals("one && two &&&&", hdr.getCenter());
+ hdr.setAreFieldsStripped(true);
+
+ // In Excel headers fields start with '&'
+ // For '&' to appear as text it needs to be escaped as '&&'
+ assertEquals("one & two &&", hdr.getCenter());
+ }
+ }
+
@Test
void getAllHeadersFooters() throws IOException {
try (XSSFWorkbook workbook = new XSSFWorkbook()) {
assertEquals(simple, XSSFOddHeader.stripFields(withPage));
assertEquals(simple, XSSFOddHeader.stripFields(withLots));
assertEquals(simple, XSSFOddHeader.stripFields(withFont));
- assertEquals(simple + "&&", XSSFOddHeader.stripFields(withOtherAnds));
+ assertEquals(simple + "&", XSSFOddHeader.stripFields(withOtherAnds));
assertEquals(simple + "&a&b", XSSFOddHeader.stripFields(withOtherAnds2));
// Now test the default strip flag
// Now do the tricky, dynamic ones
// 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}", "");
+ text = text.replaceAll("&\\d+", "");
+ text = text.replaceAll("&\".*?,.*?\"", "");
+ text = text.replaceAll("&K[\\dA-F]{6}", "");
+ text = text.replaceAll("&K[\\d]{2}[+][\\d]{3}", "");
+
+ text = text.replaceAll("&&", "&");
+
// All done
return text;
assertEquals(simple, HSSFHeader.stripFields(withPage));
assertEquals(simple, HSSFHeader.stripFields(withLots));
assertEquals(simple, HSSFHeader.stripFields(withFont));
- assertEquals(simple + "&&", HSSFHeader.stripFields(withOtherAnds));
+ assertEquals(simple + "&", HSSFHeader.stripFields(withOtherAnds));
assertEquals(simple + "&a&b", HSSFHeader.stripFields(withOtherAnds2));
// Now test the default strip flag
assertEquals("bar", footer2.getCenter());
}
}
+
+ @Test
+ void testHeaderWithAmpersand() throws IOException {
+ try (HSSFWorkbook wb = openSampleWorkbook("AmpersandHeader.xls")) {
+ HSSFSheet s = wb.getSheetAt(0);
+ HSSFHeader h = s.getHeader();
+ String header = h.getCenter();
+ assertEquals("one && two &&&&", header);
+
+ // In Excel headers fields start with '&'
+ // For '&' to appear as text it needs to be escaped as '&&'
+ assertEquals("one & two &&", HSSFHeader.stripFields(header));
+ }
+ }
}