From: Nick Burch Date: Thu, 14 Apr 2011 14:32:49 +0000 (+0000) Subject: Rename/Move xssf.model.Table to xssf.usermodel.XSSFTable as it now has usermodel... X-Git-Tag: REL_3_8_BETA3~59 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=553885aad37811557261d386e8bd922a741d2823;p=poi.git Rename/Move xssf.model.Table to xssf.usermodel.XSSFTable as it now has usermodel-like features git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1092286 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index b01bf5e983..1c398d0b96 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -34,6 +34,7 @@ + Rename/Move xssf.model.Table to xssf.usermodel.XSSFTable as it now has usermodel-like features 51061 - Correct target URI for new XSSF Tables Initial support for XSSF Charts. Provides easy access to the underlying CTChart object via the Sheet Drawing, but no high level interface onto the chart contents as yet. 50884 - XSSF and HSSF freeze panes now behave the same diff --git a/src/ooxml/java/org/apache/poi/xssf/extractor/XSSFExportToXml.java b/src/ooxml/java/org/apache/poi/xssf/extractor/XSSFExportToXml.java index b5b4a6ba6e..2e6b90242a 100644 --- a/src/ooxml/java/org/apache/poi/xssf/extractor/XSSFExportToXml.java +++ b/src/ooxml/java/org/apache/poi/xssf/extractor/XSSFExportToXml.java @@ -41,7 +41,7 @@ import javax.xml.validation.SchemaFactory; import javax.xml.validation.Validator; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; -import org.apache.poi.xssf.model.Table; +import org.apache.poi.xssf.usermodel.XSSFTable; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFMap; import org.apache.poi.xssf.usermodel.XSSFRow; @@ -123,7 +123,7 @@ public class XSSFExportToXml implements Comparator{ */ public void exportToXML(OutputStream os, String encoding, boolean validate) throws SAXException, ParserConfigurationException, TransformerException{ List singleXMLCells = map.getRelatedSingleXMLCell(); - List tables = map.getRelatedTables(); + List tables = map.getRelatedTables(); String rootElement = map.getCtMap().getRootElement(); @@ -141,13 +141,13 @@ public class XSSFExportToXml implements Comparator{ List xpaths = new Vector(); Map singleXmlCellsMappings = new HashMap(); - Map tableMappings = new HashMap(); + Map tableMappings = new HashMap(); for(XSSFSingleXmlCell simpleXmlCell : singleXMLCells) { xpaths.add(simpleXmlCell.getXpath()); singleXmlCellsMappings.put(simpleXmlCell.getXpath(), simpleXmlCell); } - for(Table table : tables) { + for(XSSFTable table : tables) { String commonXPath = table.getCommonXpath(); xpaths.add(commonXPath); tableMappings.put(commonXPath, table); @@ -159,7 +159,7 @@ public class XSSFExportToXml implements Comparator{ for(String xpath : xpaths) { XSSFSingleXmlCell simpleXmlCell = singleXmlCellsMappings.get(xpath); - Table table = tableMappings.get(xpath); + XSSFTable table = tableMappings.get(xpath); if (!xpath.matches(".*\\[.*")) { diff --git a/src/ooxml/java/org/apache/poi/xssf/extractor/XSSFImportFromXML.java b/src/ooxml/java/org/apache/poi/xssf/extractor/XSSFImportFromXML.java index 854dc305bb..e87a0333b3 100644 --- a/src/ooxml/java/org/apache/poi/xssf/extractor/XSSFImportFromXML.java +++ b/src/ooxml/java/org/apache/poi/xssf/extractor/XSSFImportFromXML.java @@ -33,7 +33,7 @@ import javax.xml.xpath.XPathFactory; import org.apache.poi.util.POILogFactory; import org.apache.poi.util.POILogger; -import org.apache.poi.xssf.model.Table; +import org.apache.poi.xssf.usermodel.XSSFTable; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFMap; import org.apache.poi.xssf.usermodel.XSSFRow; @@ -85,7 +85,7 @@ public class XSSFImportFromXML { List singleXmlCells = _map.getRelatedSingleXMLCell(); - List
tables = _map.getRelatedTables(); + List tables = _map.getRelatedTables(); XPathFactory xpathFactory = XPathFactory.newInstance(); XPath xpath = xpathFactory.newXPath(); @@ -107,7 +107,7 @@ public class XSSFImportFromXML { cell.setCellValue(textContent); } - for (Table table : tables) { + for (XSSFTable table : tables) { String commonXPath = table.getCommonXpath(); NodeList result = (NodeList) xpath.evaluate(commonXPath, doc, XPathConstants.NODESET); diff --git a/src/ooxml/java/org/apache/poi/xssf/model/Table.java b/src/ooxml/java/org/apache/poi/xssf/model/Table.java deleted file mode 100644 index ee887214f4..0000000000 --- a/src/ooxml/java/org/apache/poi/xssf/model/Table.java +++ /dev/null @@ -1,279 +0,0 @@ -/* ==================================================================== - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -==================================================================== */ - -package org.apache.poi.xssf.model; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.Arrays; -import java.util.List; -import java.util.Vector; - -import org.apache.poi.POIXMLDocumentPart; -import org.apache.poi.openxml4j.opc.PackagePart; -import org.apache.poi.openxml4j.opc.PackageRelationship; -import org.apache.poi.ss.util.CellReference; -import org.apache.poi.xssf.usermodel.XSSFSheet; -import org.apache.poi.xssf.usermodel.helpers.XSSFXmlColumnPr; -import org.apache.xmlbeans.XmlException; -import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTTable; -import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTTableColumn; -import org.openxmlformats.schemas.spreadsheetml.x2006.main.TableDocument; - -/** - * - * This class implements the Table Part (Open Office XML Part 4: - * chapter 3.5.1) - * - * This implementation works under the assumption that a table contains mappings to a subtree of an XML. - * The root element of this subtree an occur multiple times (one for each row of the table). The child nodes - * of the root element can be only attributes or element with maxOccurs=1 property set - * - * - * @author Roberto Manicardi - */ -public class Table extends POIXMLDocumentPart { - - private CTTable ctTable; - private List xmlColumnPr; - private CellReference startCellReference; - private CellReference endCellReference; - private String commonXPath; - - - public Table() { - super(); - ctTable = CTTable.Factory.newInstance(); - - } - - public Table(PackagePart part, PackageRelationship rel) - throws IOException { - super(part, rel); - readFrom(part.getInputStream()); - } - - public void readFrom(InputStream is) throws IOException { - try { - TableDocument doc = TableDocument.Factory.parse(is); - ctTable = doc.getTable(); - } catch (XmlException e) { - throw new IOException(e.getLocalizedMessage()); - } - } - - public XSSFSheet getXSSFSheet(){ - return (XSSFSheet) getParent(); - } - - public void writeTo(OutputStream out) throws IOException { - TableDocument doc = TableDocument.Factory.newInstance(); - doc.setTable(ctTable); - doc.save(out, DEFAULT_XML_OPTIONS); - } - - @Override - protected void commit() throws IOException { - PackagePart part = getPackagePart(); - OutputStream out = part.getOutputStream(); - writeTo(out); - out.close(); - } - - public CTTable getCTTable(){ - return ctTable; - } - - /** - * Checks if this Table element contains even a single mapping to the map identified by id - * @param id the XSSFMap ID - * @return true if the Table element contain mappings - */ - public boolean mapsTo(long id){ - boolean maps =false; - - List pointers = getXmlColumnPrs(); - - for(XSSFXmlColumnPr pointer: pointers){ - if(pointer.getMapId()==id){ - maps=true; - break; - } - } - - return maps; - } - - - /** - * - * Calculates the xpath of the root element for the table. This will be the common part - * of all the mapping's xpaths - * - * @return the xpath of the table's root element - */ - public String getCommonXpath() { - - if(commonXPath == null){ - - String[] commonTokens ={}; - - for(CTTableColumn column :ctTable.getTableColumns().getTableColumnList()){ - if(column.getXmlColumnPr()!=null){ - String xpath = column.getXmlColumnPr().getXpath(); - String[] tokens = xpath.split("/"); - if(commonTokens.length==0){ - commonTokens = tokens; - - }else{ - int maxLenght = commonTokens.length>tokens.length? tokens.length:commonTokens.length; - for(int i =0; i subCommonTokens = Arrays.asList(commonTokens).subList(0, i); - - String[] container = {}; - - commonTokens = subCommonTokens.toArray(container); - break; - - - } - } - } - - } - } - - - commonXPath =""; - - for(int i = 1 ; i< commonTokens.length;i++){ - commonXPath +="/"+commonTokens[i]; - - } - } - - return commonXPath; - } - - - public List getXmlColumnPrs() { - - if(xmlColumnPr==null){ - xmlColumnPr = new Vector(); - for(CTTableColumn column:ctTable.getTableColumns().getTableColumnList()){ - if(column.getXmlColumnPr()!=null){ - XSSFXmlColumnPr columnPr = new XSSFXmlColumnPr(this,column,column.getXmlColumnPr()); - xmlColumnPr.add(columnPr); - } - } - } - return xmlColumnPr; - } - - /** - * @return the name of the Table, if set - */ - public String getName() { - return ctTable.getName(); - } - - /** - * Changes the name of the Table - */ - public void setName(String name) { - if(name == null) { - ctTable.unsetName(); - return; - } - ctTable.setName(name); - } - - /** - * @return the display name of the Table, if set - */ - public String getDisplayName() { - return ctTable.getDisplayName(); - } - - /** - * Changes the display name of the Table - */ - public void setDisplayName(String name) { - ctTable.setDisplayName(name); - } - - /** - * @return the number of mapped table columns (see Open Office XML Part 4: chapter 3.5.1.4) - */ - public long getNumerOfMappedColumns(){ - return ctTable.getTableColumns().getCount(); - } - - - /** - * @return The reference for the cell in the top-left part of the table - * (see Open Office XML Part 4: chapter 3.5.1.2, attribute ref) - * - */ - public CellReference getStartCellReference() { - - if(startCellReference==null){ - String ref = ctTable.getRef(); - String[] boundaries = ref.split(":"); - String from = boundaries[0]; - startCellReference = new CellReference(from); - } - return startCellReference; - } - - /** - * @return The reference for the cell in the bottom-right part of the table - * (see Open Office XML Part 4: chapter 3.5.1.2, attribute ref) - * - */ - public CellReference getEndCellReference() { - - if(endCellReference==null){ - - String ref = ctTable.getRef(); - String[] boundaries = ref.split(":"); - String from = boundaries[1]; - endCellReference = new CellReference(from); - } - return endCellReference; - } - - - /** - * @return the total number of rows in the selection. (Note: in this version autofiltering is ignored) - * - */ - public int getRowCount(){ - - - CellReference from = getStartCellReference(); - CellReference to = getEndCellReference(); - - int rowCount = -1; - if (from!=null && to!=null){ - rowCount = to.getRow()-from.getRow(); - } - return rowCount; - } -} diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFMap.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFMap.java index 6d40b686ad..6ddda437d1 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFMap.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFMap.java @@ -24,7 +24,6 @@ import org.apache.poi.POIXMLDocumentPart; import org.apache.poi.util.Internal; import org.apache.poi.xssf.model.MapInfo; import org.apache.poi.xssf.model.SingleXmlCells; -import org.apache.poi.xssf.model.Table; import org.apache.poi.xssf.usermodel.helpers.XSSFSingleXmlCell; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTMap; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSchema; @@ -101,16 +100,16 @@ public class XSSFMap { /** * @return the list of all Tables that provide a map rule to this mapping */ - public List
getRelatedTables() { + public List getRelatedTables() { - List
tables = new Vector
(); + List tables = new Vector(); int sheetNumber = mapInfo.getWorkbook().getNumberOfSheets(); for (int i = 0; i < sheetNumber; i++) { XSSFSheet sheet = mapInfo.getWorkbook().getSheetAt(i); for (POIXMLDocumentPart p : sheet.getRelations()) { if (p.getPackageRelationship().getRelationshipType().equals(XSSFRelation.TABLE.getRelation())) { - Table table = (Table) p; + XSSFTable table = (XSSFTable) p; if (table.mapsTo(ctMap.getID())) { tables.add(table); } diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRelation.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRelation.java index b49d6c2d3b..f0b9a9b715 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRelation.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRelation.java @@ -39,7 +39,6 @@ import org.apache.poi.xssf.model.MapInfo; import org.apache.poi.xssf.model.SharedStringsTable; import org.apache.poi.xssf.model.SingleXmlCells; import org.apache.poi.xssf.model.StylesTable; -import org.apache.poi.xssf.model.Table; import org.apache.poi.xssf.model.ThemesTable; /** @@ -146,7 +145,7 @@ public final class XSSFRelation extends POIXMLRelation { "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/table", "/xl/tables/table#.xml", - Table.class + XSSFTable.class ); public static final XSSFRelation IMAGES = new XSSFRelation( diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java index 163da4d262..3d72c82f8f 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java @@ -59,7 +59,6 @@ import org.apache.poi.util.Internal; import org.apache.poi.util.POILogFactory; import org.apache.poi.util.POILogger; import org.apache.poi.xssf.model.CommentsTable; -import org.apache.poi.xssf.model.Table; import org.apache.poi.xssf.usermodel.helpers.ColumnHelper; import org.apache.poi.xssf.usermodel.helpers.XSSFRowShifter; import org.apache.xmlbeans.XmlException; @@ -130,7 +129,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { * Master shared formula is the first formula in a group of shared formulas is saved in the f element. */ private Map sharedFormulas; - private TreeMap tables; + private TreeMap tables; private List arrayFormulas; private XSSFDataValidationHelper dataValidationHelper; @@ -194,8 +193,8 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { sheetComments = (CommentsTable)p; break; } - if(p instanceof Table) { - tables.put( p.getPackageRelationship().getId(), (Table)p ); + if(p instanceof XSSFTable) { + tables.put( p.getPackageRelationship().getId(), (XSSFTable)p ); } } @@ -217,7 +216,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { @SuppressWarnings("deprecation") //YK: getXYZArray() array accessors are deprecated in xmlbeans with JDK 1.5 support private void initRows(CTWorksheet worksheet) { _rows = new TreeMap(); - tables = new TreeMap(); + tables = new TreeMap(); sharedFormulas = new HashMap(); arrayFormulas = new ArrayList(); for (CTRow row : worksheet.getSheetData().getRowArray()) { @@ -3022,7 +3021,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { /** * Creates a new Table, and associates it with this Sheet */ - public Table createTable() { + public XSSFTable createTable() { if(! worksheet.isSetTableParts()) { worksheet.addNewTableParts(); } @@ -3033,7 +3032,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { // Table numbers need to be unique in the file, not just // unique within the sheet. Find the next one int tableNumber = getPackagePart().getPackage().getPartsByContentType(XSSFRelation.TABLE.getContentType()).size() + 1; - Table table = (Table)createRelationship(XSSFRelation.TABLE, XSSFFactory.getInstance(), tableNumber); + XSSFTable table = (XSSFTable)createRelationship(XSSFRelation.TABLE, XSSFFactory.getInstance(), tableNumber); tbl.setId(table.getPackageRelationship().getId()); tables.put(tbl.getId(), table); @@ -3044,8 +3043,8 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { /** * Returns any tables associated with this Sheet */ - public List
getTables() { - List
tableList = new ArrayList
( + public List getTables() { + List tableList = new ArrayList( tables.values() ); return tableList; diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFTable.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFTable.java new file mode 100644 index 0000000000..851aeaa3ae --- /dev/null +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFTable.java @@ -0,0 +1,278 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ + +package org.apache.poi.xssf.usermodel; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.Arrays; +import java.util.List; +import java.util.Vector; + +import org.apache.poi.POIXMLDocumentPart; +import org.apache.poi.openxml4j.opc.PackagePart; +import org.apache.poi.openxml4j.opc.PackageRelationship; +import org.apache.poi.ss.util.CellReference; +import org.apache.poi.xssf.usermodel.helpers.XSSFXmlColumnPr; +import org.apache.xmlbeans.XmlException; +import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTTable; +import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTTableColumn; +import org.openxmlformats.schemas.spreadsheetml.x2006.main.TableDocument; + +/** + * + * This class implements the Table Part (Open Office XML Part 4: + * chapter 3.5.1) + * + * This implementation works under the assumption that a table contains mappings to a subtree of an XML. + * The root element of this subtree an occur multiple times (one for each row of the table). The child nodes + * of the root element can be only attributes or element with maxOccurs=1 property set + * + * + * @author Roberto Manicardi + */ +public class XSSFTable extends POIXMLDocumentPart { + + private CTTable ctTable; + private List xmlColumnPr; + private CellReference startCellReference; + private CellReference endCellReference; + private String commonXPath; + + + public XSSFTable() { + super(); + ctTable = CTTable.Factory.newInstance(); + + } + + public XSSFTable(PackagePart part, PackageRelationship rel) + throws IOException { + super(part, rel); + readFrom(part.getInputStream()); + } + + public void readFrom(InputStream is) throws IOException { + try { + TableDocument doc = TableDocument.Factory.parse(is); + ctTable = doc.getTable(); + } catch (XmlException e) { + throw new IOException(e.getLocalizedMessage()); + } + } + + public XSSFSheet getXSSFSheet(){ + return (XSSFSheet) getParent(); + } + + public void writeTo(OutputStream out) throws IOException { + TableDocument doc = TableDocument.Factory.newInstance(); + doc.setTable(ctTable); + doc.save(out, DEFAULT_XML_OPTIONS); + } + + @Override + protected void commit() throws IOException { + PackagePart part = getPackagePart(); + OutputStream out = part.getOutputStream(); + writeTo(out); + out.close(); + } + + public CTTable getCTTable(){ + return ctTable; + } + + /** + * Checks if this Table element contains even a single mapping to the map identified by id + * @param id the XSSFMap ID + * @return true if the Table element contain mappings + */ + public boolean mapsTo(long id){ + boolean maps =false; + + List pointers = getXmlColumnPrs(); + + for(XSSFXmlColumnPr pointer: pointers){ + if(pointer.getMapId()==id){ + maps=true; + break; + } + } + + return maps; + } + + + /** + * + * Calculates the xpath of the root element for the table. This will be the common part + * of all the mapping's xpaths + * + * @return the xpath of the table's root element + */ + public String getCommonXpath() { + + if(commonXPath == null){ + + String[] commonTokens ={}; + + for(CTTableColumn column :ctTable.getTableColumns().getTableColumnList()){ + if(column.getXmlColumnPr()!=null){ + String xpath = column.getXmlColumnPr().getXpath(); + String[] tokens = xpath.split("/"); + if(commonTokens.length==0){ + commonTokens = tokens; + + }else{ + int maxLenght = commonTokens.length>tokens.length? tokens.length:commonTokens.length; + for(int i =0; i subCommonTokens = Arrays.asList(commonTokens).subList(0, i); + + String[] container = {}; + + commonTokens = subCommonTokens.toArray(container); + break; + + + } + } + } + + } + } + + + commonXPath =""; + + for(int i = 1 ; i< commonTokens.length;i++){ + commonXPath +="/"+commonTokens[i]; + + } + } + + return commonXPath; + } + + + public List getXmlColumnPrs() { + + if(xmlColumnPr==null){ + xmlColumnPr = new Vector(); + for(CTTableColumn column:ctTable.getTableColumns().getTableColumnList()){ + if(column.getXmlColumnPr()!=null){ + XSSFXmlColumnPr columnPr = new XSSFXmlColumnPr(this,column,column.getXmlColumnPr()); + xmlColumnPr.add(columnPr); + } + } + } + return xmlColumnPr; + } + + /** + * @return the name of the Table, if set + */ + public String getName() { + return ctTable.getName(); + } + + /** + * Changes the name of the Table + */ + public void setName(String name) { + if(name == null) { + ctTable.unsetName(); + return; + } + ctTable.setName(name); + } + + /** + * @return the display name of the Table, if set + */ + public String getDisplayName() { + return ctTable.getDisplayName(); + } + + /** + * Changes the display name of the Table + */ + public void setDisplayName(String name) { + ctTable.setDisplayName(name); + } + + /** + * @return the number of mapped table columns (see Open Office XML Part 4: chapter 3.5.1.4) + */ + public long getNumerOfMappedColumns(){ + return ctTable.getTableColumns().getCount(); + } + + + /** + * @return The reference for the cell in the top-left part of the table + * (see Open Office XML Part 4: chapter 3.5.1.2, attribute ref) + * + */ + public CellReference getStartCellReference() { + + if(startCellReference==null){ + String ref = ctTable.getRef(); + String[] boundaries = ref.split(":"); + String from = boundaries[0]; + startCellReference = new CellReference(from); + } + return startCellReference; + } + + /** + * @return The reference for the cell in the bottom-right part of the table + * (see Open Office XML Part 4: chapter 3.5.1.2, attribute ref) + * + */ + public CellReference getEndCellReference() { + + if(endCellReference==null){ + + String ref = ctTable.getRef(); + String[] boundaries = ref.split(":"); + String from = boundaries[1]; + endCellReference = new CellReference(from); + } + return endCellReference; + } + + + /** + * @return the total number of rows in the selection. (Note: in this version autofiltering is ignored) + * + */ + public int getRowCount(){ + + + CellReference from = getStartCellReference(); + CellReference to = getEndCellReference(); + + int rowCount = -1; + if (from!=null && to!=null){ + rowCount = to.getRow()-from.getRow(); + } + return rowCount; + } +} diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/XSSFXmlColumnPr.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/XSSFXmlColumnPr.java index 42b67471b7..f5d29d3729 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/XSSFXmlColumnPr.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/XSSFXmlColumnPr.java @@ -17,7 +17,7 @@ package org.apache.poi.xssf.usermodel.helpers; -import org.apache.poi.xssf.model.Table; +import org.apache.poi.xssf.usermodel.XSSFTable; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTTableColumn; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTXmlColumnPr; import org.openxmlformats.schemas.spreadsheetml.x2006.main.STXmlDataType.Enum; @@ -33,11 +33,11 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.STXmlDataType.Enum; */ public class XSSFXmlColumnPr { - private Table table; + private XSSFTable table; private CTTableColumn ctTableColumn; private CTXmlColumnPr ctXmlColumnPr; - public XSSFXmlColumnPr(Table table ,CTTableColumn ctTableColum,CTXmlColumnPr ctXmlColumnPr){ + public XSSFXmlColumnPr(XSSFTable table ,CTTableColumn ctTableColum,CTXmlColumnPr ctXmlColumnPr){ this.table = table; this.ctTableColumn = ctTableColum; this.ctXmlColumnPr = ctXmlColumnPr; diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java index d716cea471..54c5b1632e 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java @@ -43,7 +43,6 @@ import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.XSSFITestDataProvider; import org.apache.poi.xssf.XSSFTestDataSamples; import org.apache.poi.xssf.model.CalculationChain; -import org.apache.poi.xssf.model.Table; import org.apache.poi.xssf.usermodel.extensions.XSSFCellFill; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet; @@ -852,7 +851,7 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { assertEquals(0, s2.getTables().size()); assertEquals(0, s3.getTables().size()); - Table t = s1.getTables().get(0); + XSSFTable t = s1.getTables().get(0); assertEquals("Tabella1", t.getName()); assertEquals("Tabella1", t.getDisplayName()); assertEquals("A1:C3", t.getCTTable().getRef()); diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java index 410ab61eb9..1f5edc57e7 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java @@ -26,7 +26,6 @@ import org.apache.poi.xssf.XSSFTestDataSamples; import org.apache.poi.xssf.model.CommentsTable; import org.apache.poi.xssf.model.StylesTable; import org.apache.poi.xssf.model.CalculationChain; -import org.apache.poi.xssf.model.Table; import org.apache.poi.xssf.usermodel.helpers.ColumnHelper; import org.apache.poi.util.HexDump; import org.apache.poi.hssf.record.PasswordRecord; @@ -1050,11 +1049,11 @@ public final class TestXSSFSheet extends BaseTestSheet { assertEquals("a", s1.getRow(0).getCell(0).getRichStringCellValue().toString()); assertEquals(1.0, s1.getRow(1).getCell(0).getNumericCellValue()); - List
tables = s1.getTables(); + List tables = s1.getTables(); assertNotNull(tables); assertEquals(1, tables.size()); - Table table = tables.get(0); + XSSFTable table = tables.get(0); assertEquals("Tabella1", table.getName()); assertEquals("Tabella1", table.getDisplayName());