You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ug...@apache.org on 2008/02/07 15:08:39 UTC
svn commit: r619419 - in /poi/branches/ooxml/src/ooxml:
java/org/apache/poi/xssf/usermodel/ testcases/org/apache/poi/xssf/io/
Author: ugo
Date: Thu Feb 7 06:08:32 2008
New Revision: 619419
URL: http://svn.apache.org/viewvc?rev=619419&view=rev
Log:
Fleshing out reading XSSF.
Modified:
poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java
poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/io/TestLoadSaveXSSF.java
Modified: poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java?rev=619419&r1=619418&r2=619419&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java (original)
+++ poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java Thu Feb 7 06:08:32 2008
@@ -50,6 +50,7 @@
public XSSFCell(XSSFRow row, CTCell cell) {
this.cell = cell;
+ // TODO: parse cell.getR() to obtain cellnum
this.row = row;
}
Modified: poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java?rev=619419&r1=619418&r2=619419&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java (original)
+++ poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java Thu Feb 7 06:08:32 2008
@@ -35,10 +35,8 @@
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBreak;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCol;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCols;
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTHeaderFooter;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPageBreak;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPageMargins;
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPageSetUpPr;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRow;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSelection;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheet;
@@ -67,11 +65,16 @@
this.sheet = sheet;
this.worksheet = CTWorksheet.Factory.newInstance();
this.worksheet.addNewSheetData();
- this.rows = new LinkedList<Row>();
- for (CTRow row : worksheet.getSheetData().getRowArray()) {
- this.rows.add(new XSSFRow(row));
- }
- // XXX ???
+ initRows(worksheet);
+
+ this.worksheet.addNewHeaderFooter();
+ worksheet.addNewRowBreaks();
+ worksheet.addNewColBreaks();
+ CTSheetPr sheetPr = worksheet.addNewSheetPr();
+ sheetPr.addNewPageSetUpPr();
+ worksheet.addNewPageMargins();
+
+ // XXX Initial default data, probably useful only for testing. Review and eliminate if necessary.
CTSheetViews views = this.worksheet.addNewSheetViews();
CTSheetView view = views.addNewSheetView();
view.setWorkbookViewId(0);
@@ -95,12 +98,25 @@
col.setWidth(13);
col.setCustomWidth(true);
}
- CTHeaderFooter hf = this.worksheet.addNewHeaderFooter();
- CTPageBreak rowBreaks = worksheet.addNewRowBreaks();
- CTPageBreak columnBreak = worksheet.addNewColBreaks();
- CTSheetPr sheetPr = worksheet.addNewSheetPr();
- CTPageSetUpPr sheetPageSetUpPr = sheetPr.addNewPageSetUpPr();
- CTPageMargins pageMargins = worksheet.addNewPageMargins();
+
+ initColumns(worksheet);
+ }
+
+ public XSSFSheet(CTSheet sheet, CTWorksheet worksheet) {
+ this.sheet = sheet;
+ this.worksheet = worksheet;
+ initRows(worksheet);
+ initColumns(worksheet);
+ }
+
+ private void initRows(CTWorksheet worksheet) {
+ this.rows = new LinkedList<Row>();
+ for (CTRow row : worksheet.getSheetData().getRowArray()) {
+ this.rows.add(new XSSFRow(row));
+ }
+ }
+
+ private void initColumns(CTWorksheet worksheet) {
columnHelper = new ColumnHelper(worksheet);
}
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=619419&r1=619418&r2=619419&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 Thu Feb 7 06:08:32 2008
@@ -39,6 +39,7 @@
import org.openxml4j.opc.Package;
import org.openxml4j.opc.PackagePart;
import org.openxml4j.opc.PackagePartName;
+import org.openxml4j.opc.PackageRelationship;
import org.openxml4j.opc.PackageRelationshipTypes;
import org.openxml4j.opc.PackagingURIHelper;
import org.openxml4j.opc.TargetMode;
@@ -48,10 +49,15 @@
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbook;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.WorkbookDocument;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.WorksheetDocument;
public class XSSFWorkbook extends POIXMLDocument implements Workbook {
+ private static final String WORKSHEET_TYPE = "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml";
+
+ private static final String WORKSHEET_RELATIONSHIP = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet";
+
private CTWorkbook workbook;
private List<XSSFSheet> sheets = new LinkedList<XSSFSheet>();
@@ -69,8 +75,25 @@
try {
WorkbookDocument doc = WorkbookDocument.Factory.parse(getCorePart().getInputStream());
this.workbook = doc.getWorkbook();
+ for (CTSheet ctSheet : this.workbook.getSheets().getSheetArray()) {
+ PackageRelationship rel = this.getCorePart().getRelationship(ctSheet.getId());
+ PackagePartName relName = PackagingURIHelper.createPartName(rel.getTargetURI());
+ PackagePart part = getPackage().getPart(relName);
+ if (part == null) {
+ throw new IllegalArgumentException("No part found for relationship " + rel);
+ }
+ WorksheetDocument worksheetDoc = WorksheetDocument.Factory.parse(part.getInputStream());
+ XSSFSheet sheet = new XSSFSheet(ctSheet, worksheetDoc.getWorksheet());
+ this.sheets.add(sheet);
+ }
} catch (XmlException e) {
throw new IOException(e.toString());
+ } catch (InvalidFormatException e) {
+ throw new IOException(e.toString());
+/*
+ } catch (OpenXML4JException e) {
+ throw new IOException(e.toString());
+*/
}
}
@@ -401,9 +424,8 @@
for (int i = 0 ; i < this.getNumberOfSheets() ; ++i) {
XSSFSheet sheet = (XSSFSheet) this.getSheetAt(i);
PackagePartName partName = PackagingURIHelper.createPartName("/xl/worksheets/sheet" + i + ".xml");
- corePart.addRelationship(partName, TargetMode.INTERNAL, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet", "rSheet" + 1);
- PackagePart part = pkg.createPart(partName,
- "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml");
+ corePart.addRelationship(partName, TargetMode.INTERNAL, WORKSHEET_RELATIONSHIP, "rSheet" + 1);
+ PackagePart part = pkg.createPart(partName, WORKSHEET_TYPE);
// XXX This should not be needed, but apparently the setSaveOuter call above does not work in XMLBeans 2.2
xmlOptions.setSaveSyntheticDocumentElement(new QName(CTWorksheet.type.getName().getNamespaceURI(), "worksheet"));
Modified: poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/io/TestLoadSaveXSSF.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/io/TestLoadSaveXSSF.java?rev=619419&r1=619418&r2=619419&view=diff
==============================================================================
--- poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/io/TestLoadSaveXSSF.java (original)
+++ poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/io/TestLoadSaveXSSF.java Thu Feb 7 06:08:32 2008
@@ -21,6 +21,9 @@
import junit.framework.TestCase;
+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.xssf.usermodel.XSSFWorkbook;
@@ -31,12 +34,20 @@
protected void setUp() throws Exception {
super.setUp();
filename = System.getProperty("HSSF.testdata.path");
+ if (filename == null) {
+ filename = "src/testcases/org/apache/poi/hssf/data";
+ }
}
public void testLoadSample() throws Exception {
XSSFWorkbook workbook = new XSSFWorkbook(new File(filename, "sample.xlsx").getAbsolutePath());
assertEquals(3, workbook.getNumberOfSheets());
assertEquals("Sheet1", workbook.getSheetName(0));
+ Sheet sheet = workbook.getSheetAt(0);
+ Row row = sheet.getRow(0);
+ Cell cell = row.getCell((short) 1);
+ // assertNotNull(cell);
+ // assertEquals(111.0, cell.getNumericCellValue());
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org