Author: fanningpj
Date: Sat Oct 26 15:22:52 2024
New Revision: 1921571

URL: http://svn.apache.org/viewvc?rev=1921571&view=rev
Log:
[bug-69411] add XSSFReader.getSheetIterator

Modified:
    
poi/trunk/poi-examples/src/main/java/org/apache/poi/examples/xssf/eventusermodel/LoadPasswordProtectedXlsxStreaming.java
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/eventusermodel/XSSFBReader.java
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/eventusermodel/XSSFReader.java
    
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/eventusermodel/TestXSSFReader.java

Modified: 
poi/trunk/poi-examples/src/main/java/org/apache/poi/examples/xssf/eventusermodel/LoadPasswordProtectedXlsxStreaming.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-examples/src/main/java/org/apache/poi/examples/xssf/eventusermodel/LoadPasswordProtectedXlsxStreaming.java?rev=1921571&r1=1921570&r2=1921571&view=diff
==============================================================================
--- 
poi/trunk/poi-examples/src/main/java/org/apache/poi/examples/xssf/eventusermodel/LoadPasswordProtectedXlsxStreaming.java
 (original)
+++ 
poi/trunk/poi-examples/src/main/java/org/apache/poi/examples/xssf/eventusermodel/LoadPasswordProtectedXlsxStreaming.java
 Sat Oct 26 15:22:52 2024
@@ -20,12 +20,12 @@
 package org.apache.poi.examples.xssf.eventusermodel;
 
 import java.io.InputStream;
+import java.util.Iterator;
 
 import org.apache.poi.examples.xssf.usermodel.LoadPasswordProtectedXlsx;
 import org.apache.poi.openxml4j.opc.OPCPackage;
 import org.apache.poi.poifs.crypt.temp.AesZipFileZipEntrySource;
 import org.apache.poi.xssf.eventusermodel.XSSFReader;
-import org.apache.poi.xssf.eventusermodel.XSSFReader.SheetIterator;
 
 /**
  * An example that loads a password protected workbook and counts the sheets.
@@ -48,11 +48,12 @@ public final class LoadPasswordProtected
         try (AesZipFileZipEntrySource source = 
AesZipFileZipEntrySource.createZipEntrySource(inputStream);
              OPCPackage pkg = OPCPackage.open(source)) {
             XSSFReader reader = new XSSFReader(pkg);
-            SheetIterator iter = (SheetIterator)reader.getSheetsData();
+            Iterator<InputStream> iter = reader.getSheetsData();
             int count = 0;
             while(iter.hasNext()) {
-                iter.next();
-                count++;
+                try (InputStream stream = iter.next()) {
+                    count++;
+                }
             }
             System.out.println("sheet count: " + count);
         }

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/eventusermodel/XSSFBReader.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/eventusermodel/XSSFBReader.java?rev=1921571&r1=1921570&r2=1921571&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/eventusermodel/XSSFBReader.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/eventusermodel/XSSFBReader.java
 Sat Oct 26 15:22:52 2024
@@ -107,9 +107,10 @@ public class XSSFBReader extends XSSFRea
      * @return iterator of {@link InputStream}s
      * @throws InvalidFormatException if the sheet data format is invalid
      * @throws IOException if there is an I/O issue reading the data
+     * @since POI 5.3.1
      */
     @Override
-    public Iterator<InputStream> getSheetsData() throws IOException, 
InvalidFormatException {
+    public SheetIterator getSheetIterator() throws IOException, 
InvalidFormatException {
         return new SheetIterator(workbookPart);
     }
 

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/eventusermodel/XSSFReader.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/eventusermodel/XSSFReader.java?rev=1921571&r1=1921570&r2=1921571&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/eventusermodel/XSSFReader.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/eventusermodel/XSSFReader.java
 Sat Oct 26 15:22:52 2024
@@ -265,8 +265,24 @@ public class XSSFReader {
      *
      * @throws InvalidFormatException if the sheet data format is invalid
      * @throws IOException if there is an I/O issue reading the data
+     * @see #getSheetIterator()
      */
     public Iterator<InputStream> getSheetsData() throws IOException, 
InvalidFormatException {
+        return getSheetIterator();
+    }
+
+    /**
+     * Returns an Iterator which will let you get at all the
+     * different Sheets in turn.
+     * Each sheet's InputStream is only opened when fetched
+     * from the Iterator. It's up to you to close the
+     * InputStreams when done with each one.
+     *
+     * @throws InvalidFormatException if the sheet data format is invalid
+     * @throws IOException if there is an I/O issue reading the data
+     * @since POI 5.3.1
+     */
+    public SheetIterator getSheetIterator() throws IOException, 
InvalidFormatException {
         return new SheetIterator(workbookPart);
     }
 

Modified: 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/eventusermodel/TestXSSFReader.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/eventusermodel/TestXSSFReader.java?rev=1921571&r1=1921570&r2=1921571&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/eventusermodel/TestXSSFReader.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/eventusermodel/TestXSSFReader.java
 Sat Oct 26 15:22:52 2024
@@ -156,7 +156,7 @@ public final class TestXSSFReader {
             XSSFReader r = new XSSFReader(pkg);
 
             String[] sheetNames = {"Sheet4", "Sheet2", "Sheet3", "Sheet1"};
-            XSSFReader.SheetIterator it = (XSSFReader.SheetIterator) 
r.getSheetsData();
+            XSSFReader.SheetIterator it = r.getSheetIterator();
 
             int count = 0;
             while (it.hasNext()) {



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to