Fix whitespace
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1563660 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
e023d34c9a
commit
d07ce077f5
@ -94,191 +94,191 @@ public class EventBasedExcelExtractor extends POIOLE2TextExtractor implements or
|
|||||||
return _dir.getFileSystem();
|
return _dir.getFileSystem();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Would return the document information metadata for the document,
|
* Would return the document information metadata for the document,
|
||||||
* if we supported it
|
* if we supported it
|
||||||
*/
|
*/
|
||||||
public DocumentSummaryInformation getDocSummaryInformation() {
|
public DocumentSummaryInformation getDocSummaryInformation() {
|
||||||
throw new IllegalStateException("Metadata extraction not supported in streaming mode, please use ExcelExtractor");
|
throw new IllegalStateException("Metadata extraction not supported in streaming mode, please use ExcelExtractor");
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Would return the summary information metadata for the document,
|
* Would return the summary information metadata for the document,
|
||||||
* if we supported it
|
* if we supported it
|
||||||
*/
|
*/
|
||||||
public SummaryInformation getSummaryInformation() {
|
public SummaryInformation getSummaryInformation() {
|
||||||
throw new IllegalStateException("Metadata extraction not supported in streaming mode, please use ExcelExtractor");
|
throw new IllegalStateException("Metadata extraction not supported in streaming mode, please use ExcelExtractor");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Would control the inclusion of cell comments from the document,
|
|
||||||
* if we supported it
|
|
||||||
*/
|
|
||||||
public void setIncludeCellComments(boolean includeComments) {
|
|
||||||
throw new IllegalStateException("Comment extraction not supported in streaming mode, please use ExcelExtractor");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Would control the inclusion of headers and footers from the document,
|
|
||||||
* if we supported it
|
|
||||||
*/
|
|
||||||
public void setIncludeHeadersFooters(boolean includeHeadersFooters) {
|
|
||||||
throw new IllegalStateException("Header/Footer extraction not supported in streaming mode, please use ExcelExtractor");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Should sheet names be included? Default is true
|
|
||||||
*/
|
|
||||||
public void setIncludeSheetNames(boolean includeSheetNames) {
|
|
||||||
_includeSheetNames = includeSheetNames;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Should we return the formula itself, and not
|
|
||||||
* the result it produces? Default is false
|
|
||||||
*/
|
|
||||||
public void setFormulasNotResults(boolean formulasNotResults) {
|
|
||||||
_formulasNotResults = formulasNotResults;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retreives the text contents of the file
|
* Would control the inclusion of cell comments from the document,
|
||||||
*/
|
* if we supported it
|
||||||
public String getText() {
|
*/
|
||||||
String text = null;
|
public void setIncludeCellComments(boolean includeComments) {
|
||||||
try {
|
throw new IllegalStateException("Comment extraction not supported in streaming mode, please use ExcelExtractor");
|
||||||
TextListener tl = triggerExtraction();
|
}
|
||||||
|
|
||||||
text = tl._text.toString();
|
/**
|
||||||
if(! text.endsWith("\n")) {
|
* Would control the inclusion of headers and footers from the document,
|
||||||
text = text + "\n";
|
* if we supported it
|
||||||
}
|
*/
|
||||||
} catch(IOException e) {
|
public void setIncludeHeadersFooters(boolean includeHeadersFooters) {
|
||||||
throw new RuntimeException(e);
|
throw new IllegalStateException("Header/Footer extraction not supported in streaming mode, please use ExcelExtractor");
|
||||||
}
|
}
|
||||||
|
|
||||||
return text;
|
|
||||||
}
|
|
||||||
|
|
||||||
private TextListener triggerExtraction() throws IOException {
|
/**
|
||||||
TextListener tl = new TextListener();
|
* Should sheet names be included? Default is true
|
||||||
FormatTrackingHSSFListener ft = new FormatTrackingHSSFListener(tl);
|
*/
|
||||||
tl._ft = ft;
|
public void setIncludeSheetNames(boolean includeSheetNames) {
|
||||||
|
_includeSheetNames = includeSheetNames;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Should we return the formula itself, and not
|
||||||
|
* the result it produces? Default is false
|
||||||
|
*/
|
||||||
|
public void setFormulasNotResults(boolean formulasNotResults) {
|
||||||
|
_formulasNotResults = formulasNotResults;
|
||||||
|
}
|
||||||
|
|
||||||
// Register and process
|
|
||||||
HSSFEventFactory factory = new HSSFEventFactory();
|
|
||||||
HSSFRequest request = new HSSFRequest();
|
|
||||||
request.addListenerForAllRecords(ft);
|
|
||||||
|
|
||||||
factory.processWorkbookEvents(request, _dir);
|
/**
|
||||||
|
* Retreives the text contents of the file
|
||||||
|
*/
|
||||||
|
public String getText() {
|
||||||
|
String text = null;
|
||||||
|
try {
|
||||||
|
TextListener tl = triggerExtraction();
|
||||||
|
|
||||||
return tl;
|
text = tl._text.toString();
|
||||||
}
|
if(! text.endsWith("\n")) {
|
||||||
|
text = text + "\n";
|
||||||
|
}
|
||||||
|
} catch(IOException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
|
||||||
private class TextListener implements HSSFListener {
|
return text;
|
||||||
FormatTrackingHSSFListener _ft;
|
}
|
||||||
private SSTRecord sstRecord;
|
|
||||||
|
|
||||||
private final List<String> sheetNames;
|
private TextListener triggerExtraction() throws IOException {
|
||||||
final StringBuffer _text = new StringBuffer();
|
TextListener tl = new TextListener();
|
||||||
private int sheetNum = -1;
|
FormatTrackingHSSFListener ft = new FormatTrackingHSSFListener(tl);
|
||||||
private int rowNum;
|
tl._ft = ft;
|
||||||
|
|
||||||
private boolean outputNextStringValue = false;
|
// Register and process
|
||||||
private int nextRow = -1;
|
HSSFEventFactory factory = new HSSFEventFactory();
|
||||||
|
HSSFRequest request = new HSSFRequest();
|
||||||
|
request.addListenerForAllRecords(ft);
|
||||||
|
|
||||||
public TextListener() {
|
factory.processWorkbookEvents(request, _dir);
|
||||||
sheetNames = new ArrayList<String>();
|
|
||||||
}
|
|
||||||
public void processRecord(Record record) {
|
|
||||||
String thisText = null;
|
|
||||||
int thisRow = -1;
|
|
||||||
|
|
||||||
switch(record.getSid()) {
|
return tl;
|
||||||
case BoundSheetRecord.sid:
|
}
|
||||||
BoundSheetRecord sr = (BoundSheetRecord)record;
|
|
||||||
sheetNames.add(sr.getSheetname());
|
|
||||||
break;
|
|
||||||
case BOFRecord.sid:
|
|
||||||
BOFRecord bof = (BOFRecord)record;
|
|
||||||
if(bof.getType() == BOFRecord.TYPE_WORKSHEET) {
|
|
||||||
sheetNum++;
|
|
||||||
rowNum = -1;
|
|
||||||
|
|
||||||
if(_includeSheetNames) {
|
private class TextListener implements HSSFListener {
|
||||||
if(_text.length() > 0) _text.append("\n");
|
FormatTrackingHSSFListener _ft;
|
||||||
_text.append(sheetNames.get(sheetNum));
|
private SSTRecord sstRecord;
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case SSTRecord.sid:
|
|
||||||
sstRecord = (SSTRecord)record;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case FormulaRecord.sid:
|
private final List<String> sheetNames;
|
||||||
FormulaRecord frec = (FormulaRecord) record;
|
final StringBuffer _text = new StringBuffer();
|
||||||
thisRow = frec.getRow();
|
private int sheetNum = -1;
|
||||||
|
private int rowNum;
|
||||||
|
|
||||||
if(_formulasNotResults) {
|
private boolean outputNextStringValue = false;
|
||||||
thisText = HSSFFormulaParser.toFormulaString((HSSFWorkbook)null, frec.getParsedExpression());
|
private int nextRow = -1;
|
||||||
} else {
|
|
||||||
if(frec.hasCachedResultString()) {
|
|
||||||
// Formula result is a string
|
|
||||||
// This is stored in the next record
|
|
||||||
outputNextStringValue = true;
|
|
||||||
nextRow = frec.getRow();
|
|
||||||
} else {
|
|
||||||
thisText = _ft.formatNumberDateCell(frec);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case StringRecord.sid:
|
|
||||||
if(outputNextStringValue) {
|
|
||||||
// String for formula
|
|
||||||
StringRecord srec = (StringRecord)record;
|
|
||||||
thisText = srec.getString();
|
|
||||||
thisRow = nextRow;
|
|
||||||
outputNextStringValue = false;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case LabelRecord.sid:
|
|
||||||
LabelRecord lrec = (LabelRecord) record;
|
|
||||||
thisRow = lrec.getRow();
|
|
||||||
thisText = lrec.getValue();
|
|
||||||
break;
|
|
||||||
case LabelSSTRecord.sid:
|
|
||||||
LabelSSTRecord lsrec = (LabelSSTRecord) record;
|
|
||||||
thisRow = lsrec.getRow();
|
|
||||||
if(sstRecord == null) {
|
|
||||||
throw new IllegalStateException("No SST record found");
|
|
||||||
}
|
|
||||||
thisText = sstRecord.getString(lsrec.getSSTIndex()).toString();
|
|
||||||
break;
|
|
||||||
case NoteRecord.sid:
|
|
||||||
NoteRecord nrec = (NoteRecord) record;
|
|
||||||
thisRow = nrec.getRow();
|
|
||||||
// TODO: Find object to match nrec.getShapeId()
|
|
||||||
break;
|
|
||||||
case NumberRecord.sid:
|
|
||||||
NumberRecord numrec = (NumberRecord) record;
|
|
||||||
thisRow = numrec.getRow();
|
|
||||||
thisText = _ft.formatNumberDateCell(numrec);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(thisText != null) {
|
public TextListener() {
|
||||||
if(thisRow != rowNum) {
|
sheetNames = new ArrayList<String>();
|
||||||
rowNum = thisRow;
|
}
|
||||||
if(_text.length() > 0)
|
public void processRecord(Record record) {
|
||||||
_text.append("\n");
|
String thisText = null;
|
||||||
} else {
|
int thisRow = -1;
|
||||||
_text.append("\t");
|
|
||||||
}
|
switch(record.getSid()) {
|
||||||
_text.append(thisText);
|
case BoundSheetRecord.sid:
|
||||||
}
|
BoundSheetRecord sr = (BoundSheetRecord)record;
|
||||||
}
|
sheetNames.add(sr.getSheetname());
|
||||||
}
|
break;
|
||||||
|
case BOFRecord.sid:
|
||||||
|
BOFRecord bof = (BOFRecord)record;
|
||||||
|
if(bof.getType() == BOFRecord.TYPE_WORKSHEET) {
|
||||||
|
sheetNum++;
|
||||||
|
rowNum = -1;
|
||||||
|
|
||||||
|
if(_includeSheetNames) {
|
||||||
|
if(_text.length() > 0) _text.append("\n");
|
||||||
|
_text.append(sheetNames.get(sheetNum));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SSTRecord.sid:
|
||||||
|
sstRecord = (SSTRecord)record;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case FormulaRecord.sid:
|
||||||
|
FormulaRecord frec = (FormulaRecord) record;
|
||||||
|
thisRow = frec.getRow();
|
||||||
|
|
||||||
|
if(_formulasNotResults) {
|
||||||
|
thisText = HSSFFormulaParser.toFormulaString((HSSFWorkbook)null, frec.getParsedExpression());
|
||||||
|
} else {
|
||||||
|
if(frec.hasCachedResultString()) {
|
||||||
|
// Formula result is a string
|
||||||
|
// This is stored in the next record
|
||||||
|
outputNextStringValue = true;
|
||||||
|
nextRow = frec.getRow();
|
||||||
|
} else {
|
||||||
|
thisText = _ft.formatNumberDateCell(frec);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case StringRecord.sid:
|
||||||
|
if(outputNextStringValue) {
|
||||||
|
// String for formula
|
||||||
|
StringRecord srec = (StringRecord)record;
|
||||||
|
thisText = srec.getString();
|
||||||
|
thisRow = nextRow;
|
||||||
|
outputNextStringValue = false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case LabelRecord.sid:
|
||||||
|
LabelRecord lrec = (LabelRecord) record;
|
||||||
|
thisRow = lrec.getRow();
|
||||||
|
thisText = lrec.getValue();
|
||||||
|
break;
|
||||||
|
case LabelSSTRecord.sid:
|
||||||
|
LabelSSTRecord lsrec = (LabelSSTRecord) record;
|
||||||
|
thisRow = lsrec.getRow();
|
||||||
|
if(sstRecord == null) {
|
||||||
|
throw new IllegalStateException("No SST record found");
|
||||||
|
}
|
||||||
|
thisText = sstRecord.getString(lsrec.getSSTIndex()).toString();
|
||||||
|
break;
|
||||||
|
case NoteRecord.sid:
|
||||||
|
NoteRecord nrec = (NoteRecord) record;
|
||||||
|
thisRow = nrec.getRow();
|
||||||
|
// TODO: Find object to match nrec.getShapeId()
|
||||||
|
break;
|
||||||
|
case NumberRecord.sid:
|
||||||
|
NumberRecord numrec = (NumberRecord) record;
|
||||||
|
thisRow = numrec.getRow();
|
||||||
|
thisText = _ft.formatNumberDateCell(numrec);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(thisText != null) {
|
||||||
|
if(thisRow != rowNum) {
|
||||||
|
rowNum = thisRow;
|
||||||
|
if(_text.length() > 0)
|
||||||
|
_text.append("\n");
|
||||||
|
} else {
|
||||||
|
_text.append("\t");
|
||||||
|
}
|
||||||
|
_text.append(thisText);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,30 +21,30 @@ package org.apache.poi.ss.extractor;
|
|||||||
* HSSF and XSSF
|
* HSSF and XSSF
|
||||||
*/
|
*/
|
||||||
public interface ExcelExtractor {
|
public interface ExcelExtractor {
|
||||||
/**
|
/**
|
||||||
* Should sheet names be included? Default is true
|
* Should sheet names be included? Default is true
|
||||||
*/
|
*/
|
||||||
public void setIncludeSheetNames(boolean includeSheetNames);
|
public void setIncludeSheetNames(boolean includeSheetNames);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Should we return the formula itself, and not
|
* Should we return the formula itself, and not
|
||||||
* the result it produces? Default is false
|
* the result it produces? Default is false
|
||||||
*/
|
*/
|
||||||
public void setFormulasNotResults(boolean formulasNotResults);
|
public void setFormulasNotResults(boolean formulasNotResults);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Should headers and footers be included in the output?
|
* Should headers and footers be included in the output?
|
||||||
* Default is true
|
* Default is true
|
||||||
*/
|
*/
|
||||||
public void setIncludeHeadersFooters(boolean includeHeadersFooters);
|
public void setIncludeHeadersFooters(boolean includeHeadersFooters);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Should cell comments be included? Default is false
|
* Should cell comments be included? Default is false
|
||||||
*/
|
*/
|
||||||
public void setIncludeCellComments(boolean includeCellComments);
|
public void setIncludeCellComments(boolean includeCellComments);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retreives the text contents of the file
|
* Retreives the text contents of the file
|
||||||
*/
|
*/
|
||||||
public String getText();
|
public String getText();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user