]> source.dussan.org Git - poi.git/commitdiff
Start on bug 45540, not fixed yet though
authorNick Burch <nick@apache.org>
Tue, 5 Aug 2008 09:50:05 +0000 (09:50 +0000)
committerNick Burch <nick@apache.org>
Tue, 5 Aug 2008 09:50:05 +0000 (09:50 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/branches/ooxml@682655 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/hssf/extractor/ExcelExtractor.java
src/ooxml/java/org/apache/poi/xssf/extractor/XSSFExcelExtractor.java
src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFHeaderFooter.java
src/ooxml/testcases/org/apache/poi/xssf/extractor/TestXSSFExcelExtractor.java
src/testcases/org/apache/poi/hssf/data/45540_classic_Footer.xlsx [new file with mode: 0644]
src/testcases/org/apache/poi/hssf/data/45540_classic_Header.xlsx [new file with mode: 0644]
src/testcases/org/apache/poi/hssf/data/45540_form_Footer.xlsx [new file with mode: 0644]
src/testcases/org/apache/poi/hssf/data/45540_form_Header.xlsx [new file with mode: 0644]

index 9a712c40eb3482a5cb9483aa2e4f348102b67c00..67499cd0b012d349e7f8b6b48aa7e6e807a08014 100644 (file)
@@ -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) {
index 2d27f5d33ddba55f11d3c04e3b8de93e6e8e9ce1..113436dc40b4ec9ea128143b4a2caeaf219bedce 100644 (file)
@@ -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<Cell> 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);
+       }
 }
index 57728a60964e4f4575001ae6c40b10e0206a0777..6d1b152e040d34163ee366fa61449cdec3330461 100644 (file)
 
 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;
index f001d25c868d97da80b0f6443b20acd8b9998702..93f29065cb0269efd34d484231c143766e4e9250 100644 (file)
@@ -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 (file)
index 0000000..dda1c10
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 (file)
index 0000000..b01180b
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 (file)
index 0000000..c14dcbf
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 (file)
index 0000000..13df686
Binary files /dev/null and b/src/testcases/org/apache/poi/hssf/data/45540_form_Header.xlsx differ