Apply patch to add endSheet() to the XSSFEventBasedExcelExtractor, fixes bug 60737, thanks to user zakim for the patch
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1809371 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
5ed15ac7c2
commit
4a6bb031a0
@ -40,7 +40,6 @@ import org.apache.poi.hssf.record.NumberRecord;
|
|||||||
import org.apache.poi.hssf.record.Record;
|
import org.apache.poi.hssf.record.Record;
|
||||||
import org.apache.poi.hssf.record.SSTRecord;
|
import org.apache.poi.hssf.record.SSTRecord;
|
||||||
import org.apache.poi.hssf.record.StringRecord;
|
import org.apache.poi.hssf.record.StringRecord;
|
||||||
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
|
||||||
import org.apache.poi.poifs.filesystem.DirectoryNode;
|
import org.apache.poi.poifs.filesystem.DirectoryNode;
|
||||||
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
|
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
|
||||||
|
|
||||||
@ -128,7 +127,7 @@ public class EventBasedExcelExtractor extends POIOLE2TextExtractor implements or
|
|||||||
* Retreives the text contents of the file
|
* Retreives the text contents of the file
|
||||||
*/
|
*/
|
||||||
public String getText() {
|
public String getText() {
|
||||||
String text = null;
|
String text;
|
||||||
try {
|
try {
|
||||||
TextListener tl = triggerExtraction();
|
TextListener tl = triggerExtraction();
|
||||||
|
|
||||||
|
@ -394,6 +394,9 @@ public class XSSFSheetXMLHandler extends DefaultHandler {
|
|||||||
} else if ("sheetData".equals(localName)) {
|
} else if ("sheetData".equals(localName)) {
|
||||||
// Handle any "missing" cells which had comments attached
|
// Handle any "missing" cells which had comments attached
|
||||||
checkForEmptyCellComments(EmptyCellCommentsCheckType.END_OF_SHEET_DATA);
|
checkForEmptyCellComments(EmptyCellCommentsCheckType.END_OF_SHEET_DATA);
|
||||||
|
|
||||||
|
// indicate that this sheet is now done
|
||||||
|
output.endSheet();
|
||||||
}
|
}
|
||||||
else if("oddHeader".equals(localName) || "evenHeader".equals(localName) ||
|
else if("oddHeader".equals(localName) || "evenHeader".equals(localName) ||
|
||||||
"firstHeader".equals(localName)) {
|
"firstHeader".equals(localName)) {
|
||||||
@ -502,13 +505,19 @@ public class XSSFSheetXMLHandler extends DefaultHandler {
|
|||||||
public interface SheetContentsHandler {
|
public interface SheetContentsHandler {
|
||||||
/** A row with the (zero based) row number has started */
|
/** A row with the (zero based) row number has started */
|
||||||
public void startRow(int rowNum);
|
public void startRow(int rowNum);
|
||||||
|
|
||||||
/** A row with the (zero based) row number has ended */
|
/** A row with the (zero based) row number has ended */
|
||||||
public void endRow(int rowNum);
|
public void endRow(int rowNum);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A cell, with the given formatted value (may be null),
|
* A cell, with the given formatted value (may be null),
|
||||||
* and possibly a comment (may be null), was encountered */
|
* and possibly a comment (may be null), was encountered */
|
||||||
public void cell(String cellReference, String formattedValue, XSSFComment comment);
|
public void cell(String cellReference, String formattedValue, XSSFComment comment);
|
||||||
|
|
||||||
/** A header or footer has been encountered */
|
/** A header or footer has been encountered */
|
||||||
public void headerFooter(String text, boolean isHeader, String tagName);
|
public void headerFooter(String text, boolean isHeader, String tagName);
|
||||||
|
|
||||||
|
/** Signal that the end of a sheet was been reached */
|
||||||
|
public void endSheet();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -151,15 +151,9 @@ public class XSSFBEventBasedExcelExtractor extends XSSFEventBasedExcelExtractor
|
|||||||
}
|
}
|
||||||
|
|
||||||
return text.toString();
|
return text.toString();
|
||||||
} catch (IOException e) {
|
} catch (IOException | OpenXML4JException | SAXException e) {
|
||||||
LOGGER.log(POILogger.WARN, e);
|
LOGGER.log(POILogger.WARN, e);
|
||||||
return null;
|
return null;
|
||||||
} catch (SAXException se) {
|
|
||||||
LOGGER.log(POILogger.WARN, se);
|
|
||||||
return null;
|
|
||||||
} catch (OpenXML4JException o4je) {
|
|
||||||
LOGGER.log(POILogger.WARN, o4je);
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -178,7 +178,7 @@ public class XSSFEventBasedExcelExtractor extends POIXMLTextExtractor
|
|||||||
/**
|
/**
|
||||||
* Concatenate text from <rPh> text elements in SharedStringsTable
|
* Concatenate text from <rPh> text elements in SharedStringsTable
|
||||||
* Default is true;
|
* Default is true;
|
||||||
* @param concatenatePhoneticRuns
|
* @param concatenatePhoneticRuns true if runs should be concatenated, false otherwise
|
||||||
*/
|
*/
|
||||||
public void setConcatenatePhoneticRuns(boolean concatenatePhoneticRuns) {
|
public void setConcatenatePhoneticRuns(boolean concatenatePhoneticRuns) {
|
||||||
this.concatenatePhoneticRuns = concatenatePhoneticRuns;
|
this.concatenatePhoneticRuns = concatenatePhoneticRuns;
|
||||||
@ -293,15 +293,9 @@ public class XSSFEventBasedExcelExtractor extends POIXMLTextExtractor
|
|||||||
}
|
}
|
||||||
|
|
||||||
return text.toString();
|
return text.toString();
|
||||||
} catch(IOException e) {
|
} catch(IOException | OpenXML4JException | SAXException e) {
|
||||||
LOGGER.log(POILogger.WARN, e);
|
LOGGER.log(POILogger.WARN, e);
|
||||||
return null;
|
return null;
|
||||||
} catch(SAXException se) {
|
|
||||||
LOGGER.log(POILogger.WARN, se);
|
|
||||||
return null;
|
|
||||||
} catch(OpenXML4JException o4je) {
|
|
||||||
LOGGER.log(POILogger.WARN, o4je);
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -348,6 +342,10 @@ public class XSSFEventBasedExcelExtractor extends POIXMLTextExtractor
|
|||||||
output.append('\n');
|
output.append('\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void endSheet() {
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void cell(String cellRef, String formattedValue, XSSFComment comment) {
|
public void cell(String cellRef, String formattedValue, XSSFComment comment) {
|
||||||
if(firstCellOfRow) {
|
if(firstCellOfRow) {
|
||||||
|
Loading…
Reference in New Issue
Block a user