You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ni...@apache.org on 2008/03/08 18:39:59 UTC

svn commit: r635026 - in /poi/branches/ooxml/src: documentation/content/xdocs/ss/ ooxml/java/org/apache/poi/ ooxml/java/org/apache/poi/xssf/extractor/ ooxml/java/org/apache/poi/xssf/usermodel/ ooxml/testcases/org/apache/poi/xssf/extractor/

Author: nick
Date: Sat Mar  8 09:39:56 2008
New Revision: 635026

URL: http://svn.apache.org/viewvc?rev=635026&view=rev
Log:
Start updating the excel extractor to the new style code

Added:
    poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/extractor/TestXSSFExcelExtractor.java
      - copied, changed from r635021, poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/extractor/TextXSSFExcelExtractor.java
Removed:
    poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/extractor/TextXSSFExcelExtractor.java
Modified:
    poi/branches/ooxml/src/documentation/content/xdocs/ss/quick-guide.xml
    poi/branches/ooxml/src/ooxml/java/org/apache/poi/POIXMLDocument.java
    poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/extractor/XSSFExcelExtractor.java
    poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java

Modified: poi/branches/ooxml/src/documentation/content/xdocs/ss/quick-guide.xml
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/documentation/content/xdocs/ss/quick-guide.xml?rev=635026&r1=635025&r2=635026&view=diff
==============================================================================
--- poi/branches/ooxml/src/documentation/content/xdocs/ss/quick-guide.xml (original)
+++ poi/branches/ooxml/src/documentation/content/xdocs/ss/quick-guide.xml Sat Mar  8 09:39:56 2008
@@ -21,7 +21,7 @@
 
 <document>
     <header>
-        <title>Busy Developers' Guide to HSSF Features</title>
+        <title>Busy Developers' Guide to HSSF and XSSF Features</title>
         <authors>
             <person email="user@poi.apache.org" name="Glen Stampoultzis" id="CO"/>
             <person email="user@poi.apache.org" name="Yegor Kozlov" id="YK"/>
@@ -30,8 +30,9 @@
     <body>
         <section><title>Busy Developers' Guide to Features</title>
             <p>
-                Want to use HSSF read and write spreadsheets in a hurry?  This guide is for you.  If you're after
-                more in-depth coverage of the HSSF user-API please consult the <link href="how-to.html">HOWTO</link>
+                Want to use HSSF and XSSF read and write spreadsheets in a hurry?  This 
+                guide is for you.  If you're after more in-depth coverage of the HSSF and 
+                XSSF user-APIs, please consult the <link href="how-to.html">HOWTO</link>
                 guide as it contains actual descriptions of how to use this stuff.
             </p>
             <section><title>Index of Features</title>

Modified: poi/branches/ooxml/src/ooxml/java/org/apache/poi/POIXMLDocument.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/java/org/apache/poi/POIXMLDocument.java?rev=635026&r1=635025&r2=635026&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/java/org/apache/poi/POIXMLDocument.java (original)
+++ poi/branches/ooxml/src/ooxml/java/org/apache/poi/POIXMLDocument.java Sat Mar  8 09:39:56 2008
@@ -46,17 +46,32 @@
     
     protected POIXMLDocument() {}
     
+    protected POIXMLDocument(Package pkg) throws IOException {
+    	try {
+	    	this.pkg = pkg;
+	    	
+	        PackageRelationship coreDocRelationship = this.pkg.getRelationshipsByType(
+	                PackageRelationshipTypes.CORE_DOCUMENT).getRelationship(0);
+	    
+	        // Get core part
+	        this.corePart = this.pkg.getPart(coreDocRelationship);
+        } catch (OpenXML4JException e) {
+            throw new IOException(e.toString());
+    	}
+    }
     protected POIXMLDocument(String path) throws IOException {
+   		this(openPackage(path));
+    }
+    
+    /**
+     * Wrapper to open a package, returning an IOException
+     *  in the event of a problem.
+     * Works around shortcomings in java's this() constructor calls
+     */
+    protected static Package openPackage(String path) throws IOException {
         try {
-            this.pkg = Package.open(path);
-            PackageRelationship coreDocRelationship = this.pkg.getRelationshipsByType(
-                    PackageRelationshipTypes.CORE_DOCUMENT).getRelationship(0);
-        
-            // Get core part
-            this.corePart = this.pkg.getPart(coreDocRelationship);
+            return Package.open(path);
         } catch (InvalidFormatException e) {
-            throw new IOException(e.toString());
-        } catch (OpenXML4JException e) {
             throw new IOException(e.toString());
         }
     }

Modified: poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/extractor/XSSFExcelExtractor.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/extractor/XSSFExcelExtractor.java?rev=635026&r1=635025&r2=635026&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/extractor/XSSFExcelExtractor.java (original)
+++ poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/extractor/XSSFExcelExtractor.java Sat Mar  8 09:39:56 2008
@@ -20,6 +20,11 @@
 import java.io.IOException;
 
 import org.apache.poi.POIXMLTextExtractor;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.apache.xmlbeans.XmlException;
 import org.openxml4j.exceptions.OpenXML4JException;
@@ -33,10 +38,13 @@
  * Helper class to extract text from an OOXML Excel file
  */
 public class XSSFExcelExtractor extends POIXMLTextExtractor {
-	private XSSFWorkbook workbook;
+	private Workbook workbook;
 	private boolean includeSheetNames = true;
 	private boolean formulasNotResults = false;
 	
+	public XSSFExcelExtractor(String path) throws XmlException, OpenXML4JException, IOException {
+		this(new XSSFWorkbook(path));
+	}
 	public XSSFExcelExtractor(Package container) throws XmlException, OpenXML4JException, IOException {
 		this(new XSSFWorkbook(container));
 	}
@@ -52,9 +60,7 @@
 			System.exit(1);
 		}
 		POIXMLTextExtractor extractor = 
-			new HXFExcelExtractor(HXFDocument.openPackage(
-					new File(args[0])
-			));
+			new XSSFExcelExtractor(args[0]);
 		System.out.println(extractor.getText());
 	}
 
@@ -78,48 +84,27 @@
 	public String getText() {
 		StringBuffer text = new StringBuffer();
 		
-		CTSheet[] sheetRefs =
-			workbook._getHSSFXML().getSheetReferences().getSheetArray();
-		for(int i=0; i<sheetRefs.length; i++) {
-			try {
-				CTWorksheet sheet =
-					workbook._getHSSFXML().getSheet(sheetRefs[i]);
-				CTRow[] rows =
-					sheet.getSheetData().getRowArray();
-				
-				if(i > 0) {
-					text.append("\n");
-				}
-				if(includeSheetNames) {
-					text.append(sheetRefs[i].getName() + "\n");
-				}
-				
-				for(int j=0; j<rows.length; j++) {
-					CTCell[] cells = rows[j].getCArray();
-					for(int k=0; k<cells.length; k++) {
-						CTCell cell = cells[k];
-						if(k > 0) {
-							text.append("\t");
-						}
-						
-						boolean done = false;
-						
-						// Is it a formula one?
-						if(cell.getF() != null) {
-							if(formulasNotResults) {
-								text.append(cell.getF().getStringValue());
-								done = true;
-							}
-						}
-						if(!done) {
-							HSSFXMLCell uCell = new HSSFXMLCell(cell, workbook);
-							text.append(uCell.getStringValue());
-						}
+		for(int i=0; i<workbook.getNumberOfSheets(); i++) {
+			Sheet sheet = workbook.getSheetAt(i);
+			if(includeSheetNames) {
+				text.append(workbook.getSheetName(i) + "\n");
+			}
+			
+			for (Object rawR : sheet) {
+				Row row = (Row)rawR;
+				for (Object rawC: row) {
+					Cell cell = (Cell)rawC;
+					
+					// Is it a formula one?
+					if(cell.getCellType() == Cell.CELL_TYPE_FORMULA && formulasNotResults) {
+						text.append(cell.getCellFormula());
+					} else {
+						text.append(cell.toString());
 					}
-					text.append("\n");
+					
+					text.append(",");
 				}
-			} catch(Exception e) {
-				throw new RuntimeException(e);
+				text.append("\n");
 			}
 		}
 		

Modified: poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java?rev=635026&r1=635025&r2=635026&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java (original)
+++ poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java Sat Mar  8 09:39:56 2008
@@ -89,7 +89,10 @@
     }
     
     public XSSFWorkbook(String path) throws IOException {
-        super(path);
+    	this(openPackage(path));
+    }
+    public XSSFWorkbook(Package pkg) throws IOException {
+        super(pkg);
         try {
             WorkbookDocument doc = WorkbookDocument.Factory.parse(getCorePart().getInputStream());
             this.workbook = doc.getWorkbook();

Copied: poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/extractor/TestXSSFExcelExtractor.java (from r635021, poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/extractor/TextXSSFExcelExtractor.java)
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/extractor/TestXSSFExcelExtractor.java?p2=poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/extractor/TestXSSFExcelExtractor.java&p1=poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/extractor/TextXSSFExcelExtractor.java&r1=635021&r2=635026&rev=635026&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/extractor/TextXSSFExcelExtractor.java (original)
+++ poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/extractor/TestXSSFExcelExtractor.java Sat Mar  8 09:39:56 2008
@@ -14,7 +14,7 @@
    See the License for the specific language governing permissions and
    limitations under the License.
 ==================================================================== */
-package org.apache.poi.hssf.extractor;
+package org.apache.poi.xssf.extractor;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -24,28 +24,28 @@
 import junit.framework.TestCase;
 
 import org.apache.poi.POITextExtractor;
-import org.apache.poi.hssf.HSSFXML;
+import org.apache.poi.hssf.extractor.ExcelExtractor;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
-import org.apache.poi.hssf.usermodel.HSSFXMLWorkbook;
-import org.apache.poi.hxf.HXFDocument;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 
 /**
- * Tests for HXFExcelExtractor
+ * Tests for XSSFExcelExtractor
  */
-public class TestHXFExcelExtractor extends TestCase {
+public class TestXSSFExcelExtractor extends TestCase {
 	/**
 	 * A very simple file
 	 */
-	private HSSFXML xmlA;
+	private XSSFWorkbook xmlA;
+	private File fileA;
 	/**
 	 * A fairly complex file
 	 */
-	private HSSFXML xmlB;
+	private XSSFWorkbook xmlB;
 	
 	/**
 	 * A fairly simple file - ooxml
 	 */
-	private HSSFXML simpleXLSX; 
+	private XSSFWorkbook simpleXLSX; 
 	/**
 	 * A fairly simple file - ole2
 	 */
@@ -54,7 +54,7 @@
 	protected void setUp() throws Exception {
 		super.setUp();
 		
-		File fileA = new File(
+		fileA = new File(
 				System.getProperty("HSSF.testdata.path") +
 				File.separator + "sample.xlsx"
 		);
@@ -72,10 +72,10 @@
 				File.separator + "SampleSS.xls"
 		);
 		
-		xmlA = new HSSFXML(HXFDocument.openPackage(fileA));
-		xmlB = new HSSFXML(HXFDocument.openPackage(fileB));
+		xmlA = new XSSFWorkbook(fileA.toString());
+		xmlB = new XSSFWorkbook(fileB.toString());
 		
-		simpleXLSX = new HSSFXML(HXFDocument.openPackage(fileSOOXML));
+		simpleXLSX = new XSSFWorkbook(fileSOOXML.toString());
 		simpleXLS = new HSSFWorkbook(new FileInputStream(fileSOLE2));
 	}
 
@@ -83,11 +83,11 @@
 	 * Get text out of the simple file
 	 */
 	public void testGetSimpleText() throws Exception {
-		new HXFExcelExtractor(xmlA.getPackage());
-		new HXFExcelExtractor(new HSSFXMLWorkbook(xmlA));
+		new XSSFExcelExtractor(fileA.toString());
+		new XSSFExcelExtractor(xmlA);
 		
-		HXFExcelExtractor extractor = 
-			new HXFExcelExtractor(xmlA.getPackage());
+		XSSFExcelExtractor extractor = 
+			new XSSFExcelExtractor(xmlA);
 		extractor.getText();
 		
 		String text = extractor.getText();
@@ -150,11 +150,10 @@
 	}
 	
 	public void testGetComplexText() throws Exception {
-		new HXFExcelExtractor(xmlB.getPackage());
-		new HXFExcelExtractor(new HSSFXMLWorkbook(xmlB));
+		new XSSFExcelExtractor(xmlB);
 		
-		HXFExcelExtractor extractor = 
-			new HXFExcelExtractor(xmlB.getPackage());
+		XSSFExcelExtractor extractor = 
+			new XSSFExcelExtractor(xmlB);
 		extractor.getText();
 		
 		String text = extractor.getText();
@@ -174,8 +173,8 @@
 	 *  the same file, just saved as xls and xlsx
 	 */
 	public void testComparedToOLE2() throws Exception {
-		HXFExcelExtractor ooxmlExtractor =
-			new HXFExcelExtractor(simpleXLSX.getPackage());
+		XSSFExcelExtractor ooxmlExtractor =
+			new XSSFExcelExtractor(simpleXLSX);
 		ExcelExtractor ole2Extractor =
 			new ExcelExtractor(simpleXLS);
 		



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org