]> source.dussan.org Git - poi.git/commitdiff
Apply patch to add endSheet() to the XSSFEventBasedExcelExtractor, fixes bug 60737...
authorDominik Stadler <centic@apache.org>
Sat, 23 Sep 2017 07:41:27 +0000 (07:41 +0000)
committerDominik Stadler <centic@apache.org>
Sat, 23 Sep 2017 07:41:27 +0000 (07:41 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1809371 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/hssf/extractor/EventBasedExcelExtractor.java
src/ooxml/java/org/apache/poi/xssf/eventusermodel/XSSFSheetXMLHandler.java
src/ooxml/java/org/apache/poi/xssf/extractor/XSSFBEventBasedExcelExtractor.java
src/ooxml/java/org/apache/poi/xssf/extractor/XSSFEventBasedExcelExtractor.java

index f83cc9c47c093b83b435105348de7e3708b05b1b..725dab59d99e3781214609dc62c5e846cddfc9de 100644 (file)
@@ -40,7 +40,6 @@ import org.apache.poi.hssf.record.NumberRecord;
 import org.apache.poi.hssf.record.Record;
 import org.apache.poi.hssf.record.SSTRecord;
 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.POIFSFileSystem;
 
@@ -128,7 +127,7 @@ public class EventBasedExcelExtractor extends POIOLE2TextExtractor implements or
     * Retreives the text contents of the file
     */
    public String getText() {
-       String text = null;
+       String text;
        try {
            TextListener tl = triggerExtraction();
 
index 8f7b30d3c1123542513c820a5f63cd79715d576f..1b343e4c07865c06634e71596014215fb99948cf 100644 (file)
@@ -394,6 +394,9 @@ public class XSSFSheetXMLHandler extends DefaultHandler {
        } else if ("sheetData".equals(localName)) {
            // Handle any "missing" cells which had comments attached
            checkForEmptyCellComments(EmptyCellCommentsCheckType.END_OF_SHEET_DATA);
+
+           // indicate that this sheet is now done
+           output.endSheet();
        }
        else if("oddHeader".equals(localName) || "evenHeader".equals(localName) ||
              "firstHeader".equals(localName)) {
@@ -502,13 +505,19 @@ public class XSSFSheetXMLHandler extends DefaultHandler {
    public interface SheetContentsHandler {
       /** A row with the (zero based) row number has started */
       public void startRow(int rowNum);
+
       /** A row with the (zero based) row number has ended */
       public void endRow(int rowNum);
-      /** 
+
+      /**
        * A cell, with the given formatted value (may be null), 
        *  and possibly a comment (may be null), was encountered */
       public void cell(String cellReference, String formattedValue, XSSFComment comment);
+
       /** A header or footer has been encountered */
       public void headerFooter(String text, boolean isHeader, String tagName);
+
+      /** Signal that the end of a sheet was been reached */
+      public void endSheet();
    }
 }
index a55686f79765151ac24185f3328dfda7c5bddba0..4772bca59395602cd2e3fafc199fa4f6e74cedc6 100644 (file)
@@ -151,15 +151,9 @@ public class XSSFBEventBasedExcelExtractor extends XSSFEventBasedExcelExtractor
             }
 
             return text.toString();
-        } catch (IOException e) {
+        } catch (IOException | OpenXML4JException | SAXException e) {
             LOGGER.log(POILogger.WARN, e);
             return null;
-        } catch (SAXException se) {
-            LOGGER.log(POILogger.WARN, se);
-            return null;
-        } catch (OpenXML4JException o4je) {
-            LOGGER.log(POILogger.WARN, o4je);
-            return null;
         }
     }
 
index 000ee5387c625bdecf0b523f136419131d0b4c83..efcce6f94ba2624cc79c33958e035691dca5fd30 100644 (file)
@@ -178,7 +178,7 @@ public class XSSFEventBasedExcelExtractor extends POIXMLTextExtractor
     /**
      * Concatenate text from &lt;rPh&gt; text elements in SharedStringsTable
      * Default is true;
-     * @param concatenatePhoneticRuns
+     * @param concatenatePhoneticRuns true if runs should be concatenated, false otherwise
      */
     public void setConcatenatePhoneticRuns(boolean concatenatePhoneticRuns) {
         this.concatenatePhoneticRuns = concatenatePhoneticRuns;
@@ -293,15 +293,9 @@ public class XSSFEventBasedExcelExtractor extends POIXMLTextExtractor
           }
           
           return text.toString();
-       } catch(IOException e) {
+       } catch(IOException | OpenXML4JException | SAXException e) {
           LOGGER.log(POILogger.WARN, e);
           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');
         }
 
+        @Override
+        public void endSheet() {
+        }
+
         @Override
         public void cell(String cellRef, String formattedValue, XSSFComment comment) {
             if(firstCellOfRow) {