import java.io.IOException;
import org.apache.poi.POIOLE2TextExtractor;
-import org.apache.poi.hssf.usermodel.HeaderFooter;
+import org.apache.poi.ss.usermodel.HeaderFooter;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFComment;
-import org.apache.poi.hssf.usermodel.HSSFFooter;
-import org.apache.poi.hssf.usermodel.HSSFHeader;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
// Header text, if there is any
if(sheet.getHeader() != null) {
text.append(
- extractHeaderFooter(sheet.getHeader())
+ _extractHeaderFooter(sheet.getHeader())
);
}
// Finally Feader text, if there is any
if(sheet.getFooter() != null) {
text.append(
- extractHeaderFooter(sheet.getFooter())
+ _extractHeaderFooter(sheet.getFooter())
);
}
}
return text.toString();
}
- private String extractHeaderFooter(HeaderFooter hf) {
+ public static String _extractHeaderFooter(HeaderFooter hf) {
StringBuffer text = new StringBuffer();
if(hf.getLeft() != null) {
import java.util.Iterator;
import org.apache.poi.POIXMLTextExtractor;
+import org.apache.poi.hssf.extractor.ExcelExtractor;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Comment;
+import org.apache.poi.ss.usermodel.HeaderFooter;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
text.append(workbook.getSheetName(i) + "\n");
}
+ // Header, if present
+ if(sheet.getHeader() != null) {
+ text.append(
+ extractHeaderFooter(sheet.getHeader())
+ );
+ }
+
for (Object rawR : sheet) {
Row row = (Row)rawR;
for(Iterator<Cell> ri = row.cellIterator(); ri.hasNext();) {
}
text.append("\n");
}
+
+ // Finally footer, if present
+ if(sheet.getFooter() != null) {
+ text.append(
+ extractHeaderFooter(sheet.getFooter())
+ );
+ }
}
return text.toString();
}
+
+ private String extractHeaderFooter(HeaderFooter hf) {
+ return ExcelExtractor._extractHeaderFooter(hf);
+ }
}
package org.apache.poi.xssf.usermodel.extensions;
-import org.apache.poi.ss.usermodel.Footer;
+import org.apache.poi.ss.usermodel.HeaderFooter;
import org.apache.poi.xssf.usermodel.helpers.HeaderFooterHelper;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTHeaderFooter;
-public abstract class XSSFHeaderFooter implements Footer{
-
+public abstract class XSSFHeaderFooter implements HeaderFooter {
private HeaderFooterHelper helper;
private CTHeaderFooter headerFooter;
private String value;
assertTrue(m.matches());
}
}
+
+ /**
+ * From bug #45540
+ */
+ public void BROKENtestHeaderFooter() throws Exception {
+ String[] files = new String[] {
+ "45540_classic_Footer.xlsx", "45540_form_Footer.xlsx",
+ "45540_classic_Header.xlsx", "45540_form_Header.xlsx"
+ };
+ for(String file : files) {
+ File xml = new File(
+ System.getProperty("HSSF.testdata.path") +
+ File.separator + file
+ );
+ assertTrue(xml.exists());
+
+ XSSFExcelExtractor extractor =
+ new XSSFExcelExtractor(new XSSFWorkbook(xml.toString()));
+ String text = extractor.getText();
+
+ assertTrue("Unable to find expected word in text\n" + text, text.contains("testdoc"));
+ assertTrue("Unable to find expected word in text\n" + text, text.contains("test phrase"));
+ }
+ }
}