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
This commit is contained in:
parent
6b2768f4d7
commit
1acb09f9bd
@ -19,11 +19,9 @@ package org.apache.poi.hssf.extractor;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import org.apache.poi.POIOLE2TextExtractor;
|
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.HSSFCell;
|
||||||
import org.apache.poi.hssf.usermodel.HSSFComment;
|
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.HSSFRichTextString;
|
||||||
import org.apache.poi.hssf.usermodel.HSSFRow;
|
import org.apache.poi.hssf.usermodel.HSSFRow;
|
||||||
import org.apache.poi.hssf.usermodel.HSSFSheet;
|
import org.apache.poi.hssf.usermodel.HSSFSheet;
|
||||||
@ -95,7 +93,7 @@ public class ExcelExtractor extends POIOLE2TextExtractor {
|
|||||||
// Header text, if there is any
|
// Header text, if there is any
|
||||||
if(sheet.getHeader() != null) {
|
if(sheet.getHeader() != null) {
|
||||||
text.append(
|
text.append(
|
||||||
extractHeaderFooter(sheet.getHeader())
|
_extractHeaderFooter(sheet.getHeader())
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -168,7 +166,7 @@ public class ExcelExtractor extends POIOLE2TextExtractor {
|
|||||||
// Finally Feader text, if there is any
|
// Finally Feader text, if there is any
|
||||||
if(sheet.getFooter() != null) {
|
if(sheet.getFooter() != null) {
|
||||||
text.append(
|
text.append(
|
||||||
extractHeaderFooter(sheet.getFooter())
|
_extractHeaderFooter(sheet.getFooter())
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -176,7 +174,7 @@ public class ExcelExtractor extends POIOLE2TextExtractor {
|
|||||||
return text.toString();
|
return text.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private String extractHeaderFooter(HeaderFooter hf) {
|
public static String _extractHeaderFooter(HeaderFooter hf) {
|
||||||
StringBuffer text = new StringBuffer();
|
StringBuffer text = new StringBuffer();
|
||||||
|
|
||||||
if(hf.getLeft() != null) {
|
if(hf.getLeft() != null) {
|
||||||
|
@ -20,8 +20,10 @@ import java.io.IOException;
|
|||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
|
||||||
import org.apache.poi.POIXMLTextExtractor;
|
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.Cell;
|
||||||
import org.apache.poi.ss.usermodel.Comment;
|
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.Row;
|
||||||
import org.apache.poi.ss.usermodel.Sheet;
|
import org.apache.poi.ss.usermodel.Sheet;
|
||||||
import org.apache.poi.ss.usermodel.Workbook;
|
import org.apache.poi.ss.usermodel.Workbook;
|
||||||
@ -94,6 +96,13 @@ public class XSSFExcelExtractor extends POIXMLTextExtractor {
|
|||||||
text.append(workbook.getSheetName(i) + "\n");
|
text.append(workbook.getSheetName(i) + "\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Header, if present
|
||||||
|
if(sheet.getHeader() != null) {
|
||||||
|
text.append(
|
||||||
|
extractHeaderFooter(sheet.getHeader())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
for (Object rawR : sheet) {
|
for (Object rawR : sheet) {
|
||||||
Row row = (Row)rawR;
|
Row row = (Row)rawR;
|
||||||
for(Iterator<Cell> ri = row.cellIterator(); ri.hasNext();) {
|
for(Iterator<Cell> ri = row.cellIterator(); ri.hasNext();) {
|
||||||
@ -123,8 +132,19 @@ public class XSSFExcelExtractor extends POIXMLTextExtractor {
|
|||||||
}
|
}
|
||||||
text.append("\n");
|
text.append("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Finally footer, if present
|
||||||
|
if(sheet.getFooter() != null) {
|
||||||
|
text.append(
|
||||||
|
extractHeaderFooter(sheet.getFooter())
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return text.toString();
|
return text.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String extractHeaderFooter(HeaderFooter hf) {
|
||||||
|
return ExcelExtractor._extractHeaderFooter(hf);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,12 +17,11 @@
|
|||||||
|
|
||||||
package org.apache.poi.xssf.usermodel.extensions;
|
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.apache.poi.xssf.usermodel.helpers.HeaderFooterHelper;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTHeaderFooter;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTHeaderFooter;
|
||||||
|
|
||||||
public abstract class XSSFHeaderFooter implements Footer{
|
public abstract class XSSFHeaderFooter implements HeaderFooter {
|
||||||
|
|
||||||
private HeaderFooterHelper helper;
|
private HeaderFooterHelper helper;
|
||||||
private CTHeaderFooter headerFooter;
|
private CTHeaderFooter headerFooter;
|
||||||
private String value;
|
private String value;
|
||||||
|
@ -188,4 +188,28 @@ public class TestXSSFExcelExtractor extends TestCase {
|
|||||||
assertTrue(m.matches());
|
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"));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
BIN
src/testcases/org/apache/poi/hssf/data/45540_classic_Footer.xlsx
Normal file
BIN
src/testcases/org/apache/poi/hssf/data/45540_classic_Footer.xlsx
Normal file
Binary file not shown.
BIN
src/testcases/org/apache/poi/hssf/data/45540_classic_Header.xlsx
Normal file
BIN
src/testcases/org/apache/poi/hssf/data/45540_classic_Header.xlsx
Normal file
Binary file not shown.
BIN
src/testcases/org/apache/poi/hssf/data/45540_form_Footer.xlsx
Normal file
BIN
src/testcases/org/apache/poi/hssf/data/45540_form_Footer.xlsx
Normal file
Binary file not shown.
BIN
src/testcases/org/apache/poi/hssf/data/45540_form_Header.xlsx
Normal file
BIN
src/testcases/org/apache/poi/hssf/data/45540_form_Header.xlsx
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user