Patch from Yury, plus tests, from bug #45043 - Support for getting excel cell comments when extracting text
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@659572 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
8ef6b8561d
commit
f601b0899a
@ -37,6 +37,7 @@
|
|||||||
|
|
||||||
<!-- Don't forget to update status.xml too! -->
|
<!-- Don't forget to update status.xml too! -->
|
||||||
<release version="3.1-final" date="2008-06-??">
|
<release version="3.1-final" date="2008-06-??">
|
||||||
|
<action dev="POI-DEVELOPERS" type="add">45043 - Support for getting excel cell comments when extracting text</action>
|
||||||
<action dev="POI-DEVELOPERS" type="add">Extend the support for specifying a policy to HSSF on missing / blank cells when fetching, to be able to specify the policy at the HSSFWorkbook level</action>
|
<action dev="POI-DEVELOPERS" type="add">Extend the support for specifying a policy to HSSF on missing / blank cells when fetching, to be able to specify the policy at the HSSFWorkbook level</action>
|
||||||
<action dev="POI-DEVELOPERS" type="fix">45025 - improved FormulaParser parse error messages</action>
|
<action dev="POI-DEVELOPERS" type="fix">45025 - improved FormulaParser parse error messages</action>
|
||||||
<action dev="POI-DEVELOPERS" type="fix">45046 - allowed EXTERNALBOOK(0x01AE) to be optional in the LinkTable</action>
|
<action dev="POI-DEVELOPERS" type="fix">45046 - allowed EXTERNALBOOK(0x01AE) to be optional in the LinkTable</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-final" date="2008-06-??">
|
<release version="3.1-final" date="2008-06-??">
|
||||||
|
<action dev="POI-DEVELOPERS" type="add">45043 - Support for getting excel cell comments when extracting text</action>
|
||||||
<action dev="POI-DEVELOPERS" type="add">Extend the support for specifying a policy to HSSF on missing / blank cells when fetching, to be able to specify the policy at the HSSFWorkbook level</action>
|
<action dev="POI-DEVELOPERS" type="add">Extend the support for specifying a policy to HSSF on missing / blank cells when fetching, to be able to specify the policy at the HSSFWorkbook level</action>
|
||||||
<action dev="POI-DEVELOPERS" type="fix">45025 - improved FormulaParser parse error messages</action>
|
<action dev="POI-DEVELOPERS" type="fix">45025 - improved FormulaParser parse error messages</action>
|
||||||
<action dev="POI-DEVELOPERS" type="fix">45046 - allowed EXTERNALBOOK(0x01AE) to be optional in the LinkTable</action>
|
<action dev="POI-DEVELOPERS" type="fix">45046 - allowed EXTERNALBOOK(0x01AE) to be optional in the LinkTable</action>
|
||||||
|
@ -20,6 +20,7 @@ import java.io.IOException;
|
|||||||
|
|
||||||
import org.apache.poi.POIOLE2TextExtractor;
|
import org.apache.poi.POIOLE2TextExtractor;
|
||||||
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.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;
|
||||||
@ -39,6 +40,7 @@ public class ExcelExtractor extends POIOLE2TextExtractor {
|
|||||||
private HSSFWorkbook wb;
|
private HSSFWorkbook wb;
|
||||||
private boolean includeSheetNames = true;
|
private boolean includeSheetNames = true;
|
||||||
private boolean formulasNotResults = false;
|
private boolean formulasNotResults = false;
|
||||||
|
private boolean includeCellComments = false;
|
||||||
|
|
||||||
public ExcelExtractor(HSSFWorkbook wb) {
|
public ExcelExtractor(HSSFWorkbook wb) {
|
||||||
super(wb);
|
super(wb);
|
||||||
@ -62,6 +64,12 @@ public class ExcelExtractor extends POIOLE2TextExtractor {
|
|||||||
public void setFormulasNotResults(boolean formulasNotResults) {
|
public void setFormulasNotResults(boolean formulasNotResults) {
|
||||||
this.formulasNotResults = formulasNotResults;
|
this.formulasNotResults = formulasNotResults;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Should cell comments be included? Default is true
|
||||||
|
*/
|
||||||
|
public void setIncludeCellComments(boolean includeCellComments) {
|
||||||
|
this.includeCellComments = includeCellComments;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retreives the text contents of the file
|
* Retreives the text contents of the file
|
||||||
@ -128,6 +136,15 @@ public class ExcelExtractor extends POIOLE2TextExtractor {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Output the comment, if requested and exists
|
||||||
|
HSSFComment comment = cell.getCellComment();
|
||||||
|
if(includeCellComments && comment != null) {
|
||||||
|
// Replace any newlines with spaces, otherwise it
|
||||||
|
// breaks the output
|
||||||
|
String commentText = comment.getString().getString().replace('\n', ' ');
|
||||||
|
text.append(" Comment by "+comment.getAuthor()+": "+commentText);
|
||||||
|
}
|
||||||
|
|
||||||
// Output a tab if we're not on the last cell
|
// Output a tab if we're not on the last cell
|
||||||
if(outputContents && k < (lastCell-1)) {
|
if(outputContents && k < (lastCell-1)) {
|
||||||
text.append("\t");
|
text.append("\t");
|
||||||
|
@ -165,6 +165,28 @@ public final class TestExcelExtractor extends TestCase {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testWithComments() throws Exception {
|
||||||
|
ExcelExtractor extractor = createExtractor("SimpleWithComments.xls");
|
||||||
|
extractor.setIncludeSheetNames(false);
|
||||||
|
|
||||||
|
// Check without comments
|
||||||
|
assertEquals(
|
||||||
|
"1.0\tone\n" +
|
||||||
|
"2.0\ttwo\n" +
|
||||||
|
"3.0\tthree\n",
|
||||||
|
extractor.getText()
|
||||||
|
);
|
||||||
|
|
||||||
|
// Now with
|
||||||
|
extractor.setIncludeCellComments(true);
|
||||||
|
assertEquals(
|
||||||
|
"1.0\tone Comment by Yegor Kozlov: Yegor Kozlov: first cell\n" +
|
||||||
|
"2.0\ttwo Comment by Yegor Kozlov: Yegor Kozlov: second cell\n" +
|
||||||
|
"3.0\tthree Comment by Yegor Kozlov: Yegor Kozlov: third cell\n",
|
||||||
|
extractor.getText()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Embded in a non-excel file
|
* Embded in a non-excel file
|
||||||
|
Loading…
Reference in New Issue
Block a user