From: Nick Burch Date: Tue, 5 Aug 2008 09:50:05 +0000 (+0000) Subject: Start on bug 45540, not fixed yet though X-Git-Tag: REL_3_5_BETA2~35 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=9a34ef8fd38cfbecb7615099d9482981c6df8e4a;p=poi.git Start on bug 45540, not fixed yet though git-svn-id: https://svn.apache.org/repos/asf/poi/branches/ooxml@682655 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/java/org/apache/poi/hssf/extractor/ExcelExtractor.java b/src/java/org/apache/poi/hssf/extractor/ExcelExtractor.java index 9a712c40eb..67499cd0b0 100644 --- a/src/java/org/apache/poi/hssf/extractor/ExcelExtractor.java +++ b/src/java/org/apache/poi/hssf/extractor/ExcelExtractor.java @@ -19,11 +19,9 @@ package org.apache.poi.hssf.extractor; 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; @@ -95,7 +93,7 @@ public class ExcelExtractor extends POIOLE2TextExtractor { // Header text, if there is any if(sheet.getHeader() != null) { text.append( - extractHeaderFooter(sheet.getHeader()) + _extractHeaderFooter(sheet.getHeader()) ); } @@ -168,7 +166,7 @@ public class ExcelExtractor extends POIOLE2TextExtractor { // Finally Feader text, if there is any if(sheet.getFooter() != null) { text.append( - extractHeaderFooter(sheet.getFooter()) + _extractHeaderFooter(sheet.getFooter()) ); } } @@ -176,7 +174,7 @@ public class ExcelExtractor extends POIOLE2TextExtractor { return text.toString(); } - private String extractHeaderFooter(HeaderFooter hf) { + public static String _extractHeaderFooter(HeaderFooter hf) { StringBuffer text = new StringBuffer(); if(hf.getLeft() != null) { diff --git a/src/ooxml/java/org/apache/poi/xssf/extractor/XSSFExcelExtractor.java b/src/ooxml/java/org/apache/poi/xssf/extractor/XSSFExcelExtractor.java index 2d27f5d33d..113436dc40 100644 --- a/src/ooxml/java/org/apache/poi/xssf/extractor/XSSFExcelExtractor.java +++ b/src/ooxml/java/org/apache/poi/xssf/extractor/XSSFExcelExtractor.java @@ -20,8 +20,10 @@ import java.io.IOException; 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; @@ -94,6 +96,13 @@ public class XSSFExcelExtractor extends POIXMLTextExtractor { 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 ri = row.cellIterator(); ri.hasNext();) { @@ -123,8 +132,19 @@ public class XSSFExcelExtractor extends POIXMLTextExtractor { } 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); + } } diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFHeaderFooter.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFHeaderFooter.java index 57728a6096..6d1b152e04 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFHeaderFooter.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFHeaderFooter.java @@ -17,12 +17,11 @@ 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; diff --git a/src/ooxml/testcases/org/apache/poi/xssf/extractor/TestXSSFExcelExtractor.java b/src/ooxml/testcases/org/apache/poi/xssf/extractor/TestXSSFExcelExtractor.java index f001d25c86..93f29065cb 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/extractor/TestXSSFExcelExtractor.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/extractor/TestXSSFExcelExtractor.java @@ -188,4 +188,28 @@ public class TestXSSFExcelExtractor extends TestCase { 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")); + } + } } diff --git a/src/testcases/org/apache/poi/hssf/data/45540_classic_Footer.xlsx b/src/testcases/org/apache/poi/hssf/data/45540_classic_Footer.xlsx new file mode 100644 index 0000000000..dda1c10fb4 Binary files /dev/null and b/src/testcases/org/apache/poi/hssf/data/45540_classic_Footer.xlsx differ diff --git a/src/testcases/org/apache/poi/hssf/data/45540_classic_Header.xlsx b/src/testcases/org/apache/poi/hssf/data/45540_classic_Header.xlsx new file mode 100644 index 0000000000..b01180bf51 Binary files /dev/null and b/src/testcases/org/apache/poi/hssf/data/45540_classic_Header.xlsx differ diff --git a/src/testcases/org/apache/poi/hssf/data/45540_form_Footer.xlsx b/src/testcases/org/apache/poi/hssf/data/45540_form_Footer.xlsx new file mode 100644 index 0000000000..c14dcbf24a Binary files /dev/null and b/src/testcases/org/apache/poi/hssf/data/45540_form_Footer.xlsx differ diff --git a/src/testcases/org/apache/poi/hssf/data/45540_form_Header.xlsx b/src/testcases/org/apache/poi/hssf/data/45540_form_Header.xlsx new file mode 100644 index 0000000000..13df686319 Binary files /dev/null and b/src/testcases/org/apache/poi/hssf/data/45540_form_Header.xlsx differ