Fix bug #45538 - Include excel headers and footers in the output of ExcelExtractor
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@682511 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
73d5a60b68
commit
b9a01ec165
@ -37,6 +37,7 @@
|
|||||||
|
|
||||||
<!-- Don't forget to update status.xml too! -->
|
<!-- Don't forget to update status.xml too! -->
|
||||||
<release version="3.1.1-alpha1" date="2008-??-??">
|
<release version="3.1.1-alpha1" date="2008-??-??">
|
||||||
|
<action dev="POI-DEVELOPERS" type="fix">45538 - Include excel headers and footers in the output of ExcelExtractor</action>
|
||||||
<action dev="POI-DEVELOPERS" type="fix">44894 - refactor duplicate logic from EventRecordFactory to RecordFactory</action>
|
<action dev="POI-DEVELOPERS" type="fix">44894 - refactor duplicate logic from EventRecordFactory to RecordFactory</action>
|
||||||
<action dev="POI-DEVELOPERS" type="add">Support for Headers / Footers in HSLF</action>
|
<action dev="POI-DEVELOPERS" type="add">Support for Headers / Footers in HSLF</action>
|
||||||
<action dev="POI-DEVELOPERS" type="fix">44953 - Extensive fixes for data validation</action>
|
<action dev="POI-DEVELOPERS" type="fix">44953 - Extensive fixes for data validation</action>
|
||||||
|
@ -34,6 +34,7 @@
|
|||||||
<!-- Don't forget to update changes.xml too! -->
|
<!-- Don't forget to update changes.xml too! -->
|
||||||
<changes>
|
<changes>
|
||||||
<release version="3.1.1-alpha1" date="2008-??-??">
|
<release version="3.1.1-alpha1" date="2008-??-??">
|
||||||
|
<action dev="POI-DEVELOPERS" type="fix">45538 - Include excel headers and footers in the output of ExcelExtractor</action>
|
||||||
<action dev="POI-DEVELOPERS" type="fix">44894 - refactor duplicate logic from EventRecordFactory to RecordFactory</action>
|
<action dev="POI-DEVELOPERS" type="fix">44894 - refactor duplicate logic from EventRecordFactory to RecordFactory</action>
|
||||||
<action dev="POI-DEVELOPERS" type="add">Support for Headers / Footers in HSLF</action>
|
<action dev="POI-DEVELOPERS" type="add">Support for Headers / Footers in HSLF</action>
|
||||||
<action dev="POI-DEVELOPERS" type="fix">44953 - Extensive fixes for data validation</action>
|
<action dev="POI-DEVELOPERS" type="fix">44953 - Extensive fixes for data validation</action>
|
||||||
|
@ -19,8 +19,11 @@ 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.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;
|
||||||
@ -89,6 +92,13 @@ public class ExcelExtractor extends POIOLE2TextExtractor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Header text, if there is any
|
||||||
|
if(sheet.getHeader() != null) {
|
||||||
|
text.append(
|
||||||
|
extractHeaderFooter(sheet.getHeader())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
int firstRow = sheet.getFirstRowNum();
|
int firstRow = sheet.getFirstRowNum();
|
||||||
int lastRow = sheet.getLastRowNum();
|
int lastRow = sheet.getLastRowNum();
|
||||||
for(int j=firstRow;j<=lastRow;j++) {
|
for(int j=firstRow;j<=lastRow;j++) {
|
||||||
@ -154,8 +164,37 @@ public class ExcelExtractor extends POIOLE2TextExtractor {
|
|||||||
// Finish off the row
|
// Finish off the row
|
||||||
text.append("\n");
|
text.append("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Finally Feader text, if there is any
|
||||||
|
if(sheet.getFooter() != null) {
|
||||||
|
text.append(
|
||||||
|
extractHeaderFooter(sheet.getFooter())
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return text.toString();
|
return text.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String extractHeaderFooter(HeaderFooter hf) {
|
||||||
|
StringBuffer text = new StringBuffer();
|
||||||
|
|
||||||
|
if(hf.getLeft() != null) {
|
||||||
|
text.append(hf.getLeft());
|
||||||
|
}
|
||||||
|
if(hf.getCenter() != null) {
|
||||||
|
if(text.length() > 0)
|
||||||
|
text.append("\t");
|
||||||
|
text.append(hf.getCenter());
|
||||||
|
}
|
||||||
|
if(hf.getRight() != null) {
|
||||||
|
if(text.length() > 0)
|
||||||
|
text.append("\t");
|
||||||
|
text.append(hf.getRight());
|
||||||
|
}
|
||||||
|
if(text.length() > 0)
|
||||||
|
text.append("\n");
|
||||||
|
|
||||||
|
return text.toString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -32,7 +32,7 @@ import org.apache.poi.hssf.record.FooterRecord;
|
|||||||
* <P>
|
* <P>
|
||||||
* @author Shawn Laubach (slaubach at apache dot org)
|
* @author Shawn Laubach (slaubach at apache dot org)
|
||||||
*/
|
*/
|
||||||
public class HSSFFooter extends Object {
|
public class HSSFFooter extends Object implements HeaderFooter {
|
||||||
|
|
||||||
FooterRecord footerRecord;
|
FooterRecord footerRecord;
|
||||||
String left;
|
String left;
|
||||||
|
@ -32,7 +32,7 @@ import org.apache.poi.hssf.record.HeaderRecord;
|
|||||||
*
|
*
|
||||||
* @author Shawn Laubach (slaubach at apache dot org)
|
* @author Shawn Laubach (slaubach at apache dot org)
|
||||||
*/
|
*/
|
||||||
public class HSSFHeader
|
public class HSSFHeader implements HeaderFooter
|
||||||
{
|
{
|
||||||
|
|
||||||
HeaderRecord headerRecord;
|
HeaderRecord headerRecord;
|
||||||
|
33
src/java/org/apache/poi/hssf/usermodel/HeaderFooter.java
Normal file
33
src/java/org/apache/poi/hssf/usermodel/HeaderFooter.java
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
/* ====================================================================
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
==================================================================== */
|
||||||
|
package org.apache.poi.hssf.usermodel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Common interface for {@link HSSFHeader} and
|
||||||
|
* {@link HSSFFooter}.
|
||||||
|
*/
|
||||||
|
public interface HeaderFooter {
|
||||||
|
public String getLeft();
|
||||||
|
public void setLeft( String newLeft );
|
||||||
|
|
||||||
|
public String getCenter();
|
||||||
|
public void setCenter( String newCenter );
|
||||||
|
|
||||||
|
public String getRight();
|
||||||
|
public void setRight( String newRight );
|
||||||
|
|
||||||
|
}
|
BIN
src/testcases/org/apache/poi/hssf/data/45538_classic_Footer.xls
Normal file
BIN
src/testcases/org/apache/poi/hssf/data/45538_classic_Footer.xls
Normal file
Binary file not shown.
BIN
src/testcases/org/apache/poi/hssf/data/45538_classic_Header.xls
Normal file
BIN
src/testcases/org/apache/poi/hssf/data/45538_classic_Header.xls
Normal file
Binary file not shown.
BIN
src/testcases/org/apache/poi/hssf/data/45538_form_Footer.xls
Normal file
BIN
src/testcases/org/apache/poi/hssf/data/45538_form_Footer.xls
Normal file
Binary file not shown.
BIN
src/testcases/org/apache/poi/hssf/data/45538_form_Header.xls
Normal file
BIN
src/testcases/org/apache/poi/hssf/data/45538_form_Header.xls
Normal file
Binary file not shown.
@ -255,4 +255,20 @@ public final class TestExcelExtractor extends TestCase {
|
|||||||
ex.getText());
|
ex.getText());
|
||||||
assertEquals("Excel With Embeded", ex.getSummaryInformation().getTitle());
|
assertEquals("Excel With Embeded", ex.getSummaryInformation().getTitle());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test that we get text from headers and footers
|
||||||
|
*/
|
||||||
|
public void test45538() throws Exception {
|
||||||
|
String[] files = new String[] {
|
||||||
|
"45538_classic_Footer.xls", "45538_form_Footer.xls",
|
||||||
|
"45538_classic_Header.xls", "45538_form_Header.xls"
|
||||||
|
};
|
||||||
|
for(int i=0; i<files.length; i++) {
|
||||||
|
ExcelExtractor extractor = createExtractor(files[i]);
|
||||||
|
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"));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user