aboutsummaryrefslogtreecommitdiffstats
path: root/src/ooxml
diff options
context:
space:
mode:
authorYegor Kozlov <yegor@apache.org>2008-10-25 11:48:50 +0000
committerYegor Kozlov <yegor@apache.org>2008-10-25 11:48:50 +0000
commitdb877653b7f74b2a7e2524d7101178e388adf201 (patch)
treeda76d9cfdd318c2c2993df0962570a26f4952ebc /src/ooxml
parent67412a0678b028750396c27b54c937539aa3dd5d (diff)
downloadpoi-db877653b7f74b2a7e2524d7101178e388adf201.tar.gz
poi-db877653b7f74b2a7e2524d7101178e388adf201.zip
more cleanup and refactoring of the ooxml code:1. removed deprecated methods from xssf and interfaces
2. minimized the accessibility of internal constructors 3. more javadocs git-svn-id: https://svn.apache.org/repos/asf/poi/branches/ooxml@707839 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/ooxml')
-rw-r--r--src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Sheet.java45
-rw-r--r--src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Workbook.java7
-rw-r--r--src/ooxml/java/org/apache/poi/POIXMLDocument.java43
-rwxr-xr-xsrc/ooxml/java/org/apache/poi/POIXMLDocumentPart.java76
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/model/CommentsTable.java15
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/model/SharedStringsTable.java2
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java38
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java2
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java4
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFComment.java7
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDataFormat.java24
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDialogsheet.java8
-rwxr-xr-xsrc/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDrawing.java11
-rwxr-xr-xsrc/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFactory.java8
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFirstFooter.java2
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFirstHeader.java2
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFOddHeader.java2
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPictureData.java6
-rwxr-xr-xsrc/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPrintSetup.java2
-rwxr-xr-xsrc/ooxml/java/org/apache/poi/xssf/usermodel/XSSFShape.java5
-rwxr-xr-xsrc/ooxml/java/org/apache/poi/xssf/usermodel/XSSFShapeGroup.java6
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java374
-rwxr-xr-xsrc/ooxml/java/org/apache/poi/xssf/usermodel/XSSFTextBox.java1
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java156
-rw-r--r--src/ooxml/testcases/org/apache/poi/xssf/model/TestStylesTable.java8
-rw-r--r--src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java2
-rw-r--r--src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDialogSheet.java25
-rwxr-xr-xsrc/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDrawing.java8
-rw-r--r--src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java38
-rw-r--r--src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java18
-rw-r--r--src/ooxml/testcases/org/apache/poi/xssf/usermodel/helpers/TestColumnHelper.java7
31 files changed, 441 insertions, 511 deletions
diff --git a/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Sheet.java b/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Sheet.java
index 6625c6ef64..d4b1c07c68 100644
--- a/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Sheet.java
+++ b/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Sheet.java
@@ -21,7 +21,6 @@ import java.util.Iterator;
import org.apache.poi.hssf.util.PaneInformation;
import org.apache.poi.ss.util.CellRangeAddress;
-import org.apache.poi.ss.util.Region;
public interface Sheet extends Iterable<Row> {
@@ -198,11 +197,6 @@ public interface Sheet extends Iterable<Row> {
int addMergedRegion(CellRangeAddress region);
/**
- * @deprecated (Aug-2008) use {@link #addMergedRegion(CellRangeAddress)}
- */
- int addMergedRegion(Region region);
-
- /**
* determines whether the output is vertically centered on the page.
* @param value true to vertically center, false otherwise.
*/
@@ -237,14 +231,6 @@ public interface Sheet extends Iterable<Row> {
int getNumMergedRegions();
/**
- * gets the region at a particular index
- * @param index of the region to fetch
- * @return the merged region (simple eh?)
- */
-
- Region getMergedRegionAt(int index);
-
- /**
* @return an iterator of the PHYSICAL rows. Meaning the 3rd element may not
* be the third row if say for instance the second row is undefined.
*/
@@ -301,20 +287,6 @@ public interface Sheet extends Iterable<Row> {
void setRowSumsRight(boolean b);
/**
- * whether alternate expression evaluation is on
- * @return alternative expression evaluation or not
- */
-
- boolean getAlternateExpression();
-
- /**
- * whether alternative formula entry is on
- * @return alternative formulas or not
- */
-
- boolean getAlternateFormula();
-
- /**
* show automatic page breaks or not
* @return whether to show auto page breaks
*/
@@ -412,29 +384,12 @@ public interface Sheet extends Iterable<Row> {
boolean getProtect();
/**
- * @return hashed password
- */
- short getPassword();
-
- /**
- * Answer whether object protection is enabled or disabled
- * @return true => protection enabled; false => protection disabled
- */
- boolean getObjectProtect();
-
- /**
* Answer whether scenario protection is enabled or disabled
* @return true => protection enabled; false => protection disabled
*/
boolean getScenarioProtect();
/**
- * Sets the protection enabled as well as the password
- * @param password to set for protection
- */
- void protectSheet(String password);
-
- /**
* Sets the zoom magnication for the sheet. The zoom is expressed as a
* fraction. For example to express a zoom of 75% use 3 for the numerator
* and 4 for the denominator.
diff --git a/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Workbook.java b/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Workbook.java
index b853c92583..bca3b5e0f2 100644
--- a/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Workbook.java
+++ b/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Workbook.java
@@ -376,13 +376,6 @@ public interface Workbook {
List getAllPictures();
/**
- * Gets all embedded OLE2 objects from the Workbook.
- *
- * @return the list of embedded objects
- */
- List getAllEmbeddedObjects();
-
- /**
* Returns an object that handles instantiating concrete
* classes of the various instances one needs for
* HSSF and XSSF.
diff --git a/src/ooxml/java/org/apache/poi/POIXMLDocument.java b/src/ooxml/java/org/apache/poi/POIXMLDocument.java
index 90a7959ad3..2287ef4f18 100644
--- a/src/ooxml/java/org/apache/poi/POIXMLDocument.java
+++ b/src/ooxml/java/org/apache/poi/POIXMLDocument.java
@@ -17,7 +17,6 @@
package org.apache.poi;
import java.io.*;
-import java.util.LinkedList;
import java.util.List;
import org.apache.poi.poifs.common.POIFSConstants;
@@ -48,19 +47,9 @@ public abstract class POIXMLDocument extends POIXMLDocumentPart{
*/
private POIXMLProperties properties;
- protected POIXMLDocument() {
- super(null, null);
- try {
- Package pkg = newPackage();
- initialize(pkg);
- } catch (IOException e){
- throw new POIXMLException(e);
- }
- }
-
- protected POIXMLDocument(Package pkg) throws IOException {
- super(null, null);
- initialize(pkg);
+ protected POIXMLDocument(Package pkg) {
+ super(pkg);
+ this.pkg = pkg;
}
/**
@@ -76,36 +65,12 @@ public abstract class POIXMLDocument extends POIXMLDocumentPart{
}
}
- private void initialize(Package pkg) throws IOException {
- try {
- this.pkg = pkg;
-
- PackageRelationship coreDocRelationship = this.pkg.getRelationshipsByType(
- PackageRelationshipTypes.CORE_DOCUMENT).getRelationship(0);
-
- // Get core part
- this.packagePart = this.pkg.getPart(coreDocRelationship);
- this.packageRel = coreDocRelationship;
-
- // Verify it's there
- if(this.packagePart == null) {
- throw new IllegalArgumentException("No core part found for this document! Nothing with " + coreDocRelationship.getRelationshipType() + " present as a relation.");
- }
- } catch (OpenXML4JException e) {
- throw new IOException(e.toString());
- }
- }
-
- protected Package newPackage() throws IOException {
- throw new POIXMLException("Must be overridden");
- }
-
public Package getPackage() {
return this.pkg;
}
protected PackagePart getCorePart() {
- return this.packagePart;
+ return getPackagePart();
}
/**
diff --git a/src/ooxml/java/org/apache/poi/POIXMLDocumentPart.java b/src/ooxml/java/org/apache/poi/POIXMLDocumentPart.java
index 660d0fc9e2..d529bedf04 100755
--- a/src/ooxml/java/org/apache/poi/POIXMLDocumentPart.java
+++ b/src/ooxml/java/org/apache/poi/POIXMLDocumentPart.java
@@ -25,6 +25,7 @@ import org.apache.poi.util.POILogger;
import org.apache.poi.util.POILogFactory;
import org.openxml4j.exceptions.OpenXML4JException;
import org.openxml4j.opc.*;
+import org.openxml4j.opc.Package;
/**
* Represents an entry of a OOXML package.
@@ -38,7 +39,7 @@ import org.openxml4j.opc.*;
public class POIXMLDocumentPart {
private static POILogger logger = POILogFactory.getLogger(POIXMLDocumentPart.class);
- public static XmlOptions DEFAULT_XML_OPTIONS;
+ public static final XmlOptions DEFAULT_XML_OPTIONS;
static {
DEFAULT_XML_OPTIONS = new XmlOptions();
DEFAULT_XML_OPTIONS.setSaveOuter();
@@ -46,14 +47,46 @@ public class POIXMLDocumentPart {
DEFAULT_XML_OPTIONS.setSaveAggressiveNamespaces();
}
- protected PackagePart packagePart;
- protected PackageRelationship packageRel;
- protected POIXMLDocumentPart parent;
+ private PackagePart packagePart;
+ private PackageRelationship packageRel;
+ private POIXMLDocumentPart parent;
+ private List<POIXMLDocumentPart> relations;
- protected List<POIXMLDocumentPart> relations;
+ /**
+ * Construct POIXMLDocumentPart representing a "core document" package part.
+ */
+ public POIXMLDocumentPart(Package pkg) {
+ try {
+ PackageRelationship coreRel = pkg.getRelationshipsByType(
+ PackageRelationshipTypes.CORE_DOCUMENT).getRelationship(0);
+ this.relations = new LinkedList<POIXMLDocumentPart>();
+ this.packagePart = pkg.getPart(coreRel);
+ this.packageRel = coreRel;
+ } catch (OpenXML4JException e){
+ throw new POIXMLException(e);
+ }
+ }
+
+ /**
+ * Creates new POIXMLDocumentPart - called by client code to create new parts from scratch.
+ *
+ * @see #createRelationship(POIXMLRelation, POIXMLFactory, int, boolean)
+ */
+ public POIXMLDocumentPart(){
+ this.relations = new LinkedList<POIXMLDocumentPart>();
+ }
+
+ /**
+ * Creates an POIXMLDocumentPart representing the given package part and relationship.
+ * Called by {@link #read(POIXMLFactory)} when reading in an exisiting file.
+ *
+ * @param part - The package part that holds xml data represenring this sheet.
+ * @param rel - the relationship of the given package part
+ * @see #read(POIXMLFactory)
+ */
public POIXMLDocumentPart(PackagePart part, PackageRelationship rel){
- relations = new LinkedList<POIXMLDocumentPart>();
+ this.relations = new LinkedList<POIXMLDocumentPart>();
this.packagePart = part;
this.packageRel = rel;
}
@@ -63,7 +96,7 @@ public class POIXMLDocumentPart {
*
* @return the underlying PackagePart
*/
- public PackagePart getPackagePart(){
+ public final PackagePart getPackagePart(){
return packagePart;
}
@@ -72,7 +105,7 @@ public class POIXMLDocumentPart {
*
* @return the PackageRelationship that identifies this POIXMLDocumentPart
*/
- public PackageRelationship getPackageRelationship(){
+ public final PackageRelationship getPackageRelationship(){
return packageRel;
}
@@ -81,7 +114,7 @@ public class POIXMLDocumentPart {
*
* @return child relations
*/
- public List<POIXMLDocumentPart> getRelations(){
+ public final List<POIXMLDocumentPart> getRelations(){
return relations;
}
@@ -90,7 +123,7 @@ public class POIXMLDocumentPart {
*
* @param part the child to add
*/
- protected void addRelation(POIXMLDocumentPart part){
+ protected final void addRelation(POIXMLDocumentPart part){
relations.add(part);
}
@@ -99,7 +132,7 @@ public class POIXMLDocumentPart {
*
* @return the parent POIXMLDocumentPart or <code>null</code> for the root element.
*/
- public POIXMLDocumentPart getParent(){
+ public final POIXMLDocumentPart getParent(){
return parent;
}
@@ -132,11 +165,12 @@ public class POIXMLDocumentPart {
/**
* Save changes in the underlying OOXML package.
+ * Recursively fires {@link #commit()} for each package part
*/
- protected void save() throws IOException{
+ protected final void onSave() throws IOException{
commit();
for(POIXMLDocumentPart p : relations){
- p.save();
+ p.onSave();
}
}
@@ -147,11 +181,11 @@ public class POIXMLDocumentPart {
* @param factory the factory that will create an instance of the requested relation
* @return the created child POIXMLDocumentPart
*/
- protected POIXMLDocumentPart createRelationship(POIXMLRelation descriptor, POIXMLFactory factory){
+ protected final POIXMLDocumentPart createRelationship(POIXMLRelation descriptor, POIXMLFactory factory){
return createRelationship(descriptor, factory, -1, false);
}
- protected POIXMLDocumentPart createRelationship(POIXMLRelation descriptor, POIXMLFactory factory, int idx){
+ protected final POIXMLDocumentPart createRelationship(POIXMLRelation descriptor, POIXMLFactory factory, int idx){
return createRelationship(descriptor, factory, idx, false);
}
@@ -164,7 +198,7 @@ public class POIXMLDocumentPart {
* @param noRelation if true, then no relationship is added.
* @return the created child POIXMLDocumentPart
*/
- protected POIXMLDocumentPart createRelationship(POIXMLRelation descriptor, POIXMLFactory factory, int idx, boolean noRelation){
+ protected final POIXMLDocumentPart createRelationship(POIXMLRelation descriptor, POIXMLFactory factory, int idx, boolean noRelation){
try {
PackagePartName ppName = PackagingURIHelper.createPartName(descriptor.getFileName(idx));
@@ -176,7 +210,6 @@ public class POIXMLDocumentPart {
doc.packageRel = rel;
doc.packagePart = part;
doc.parent = this;
- doc.onDocumentCreate();
addRelation(doc);
return doc;
} catch (Exception e){
@@ -190,7 +223,7 @@ public class POIXMLDocumentPart {
*
* @param factory the factory object that creates POIXMLFactory instances
*/
- protected void read(POIXMLFactory factory) throws OpenXML4JException {
+ protected final void read(POIXMLFactory factory) throws OpenXML4JException {
PackageRelationshipCollection rels = packagePart.getRelationships();
for (PackageRelationship rel : rels) {
if(rel.getTargetMode() == TargetMode.INTERNAL){
@@ -202,7 +235,6 @@ public class POIXMLDocumentPart {
}
POIXMLDocumentPart childPart = factory.createDocumentPart(rel, p);
childPart.parent = this;
- childPart.onDocumentRead();
addRelation(childPart);
if(p.hasRelationships()) childPart.read(factory);
@@ -210,17 +242,19 @@ public class POIXMLDocumentPart {
}
}
+
/**
* Fired when a new package part is created
*/
- protected void onDocumentCreate(){
+ protected void onDocumentCreate() throws IOException {
}
/**
* Fired when a package part is read
*/
- protected void onDocumentRead(){
+ protected void onDocumentRead() throws IOException{
}
+
}
diff --git a/src/ooxml/java/org/apache/poi/xssf/model/CommentsTable.java b/src/ooxml/java/org/apache/poi/xssf/model/CommentsTable.java
index b0efd0bd46..ff32b8b7e4 100644
--- a/src/ooxml/java/org/apache/poi/xssf/model/CommentsTable.java
+++ b/src/ooxml/java/org/apache/poi/xssf/model/CommentsTable.java
@@ -34,11 +34,11 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.CommentsDocument;
import org.openxml4j.opc.PackagePart;
import org.openxml4j.opc.PackageRelationship;
-public class CommentsTable extends POIXMLDocumentPart implements CommentsSource {
+public class CommentsTable extends POIXMLDocumentPart {
protected CTComments comments;
public CommentsTable() {
- super(null, null);
+ super();
comments = CTComments.Factory.newInstance();
}
@@ -56,16 +56,9 @@ public class CommentsTable extends POIXMLDocumentPart implements CommentsSource
}
}
public void writeTo(OutputStream out) throws IOException {
- XmlOptions options = new XmlOptions();
- options.setSaveOuter();
- options.setUseDefaultNamespace();
-
- // Requests use of whitespace for easier reading
- //options.setSavePrettyPrint();
-
- CommentsDocument doc = CommentsDocument.Factory.newInstance(options);
+ CommentsDocument doc = CommentsDocument.Factory.newInstance();
doc.setComments(comments);
- doc.save(out, options);
+ doc.save(out, DEFAULT_XML_OPTIONS);
}
@Override
diff --git a/src/ooxml/java/org/apache/poi/xssf/model/SharedStringsTable.java b/src/ooxml/java/org/apache/poi/xssf/model/SharedStringsTable.java
index 94d0174567..edc8186627 100644
--- a/src/ooxml/java/org/apache/poi/xssf/model/SharedStringsTable.java
+++ b/src/ooxml/java/org/apache/poi/xssf/model/SharedStringsTable.java
@@ -86,7 +86,7 @@ public class SharedStringsTable extends POIXMLDocumentPart {
private int uniqueCount;
public SharedStringsTable() {
- super(null, null);
+ super();
}
public SharedStringsTable(PackagePart part, PackageRelationship rel) throws IOException {
diff --git a/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java b/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java
index 2e1473b671..c68d29204e 100644
--- a/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java
+++ b/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java
@@ -64,8 +64,8 @@ import org.openxml4j.opc.PackageRelationship;
*
* @author ugo
*/
-public class StylesTable extends POIXMLDocumentPart implements StylesSource {
- private final Hashtable<Long,String> numberFormats = new Hashtable<Long,String>();
+public class StylesTable extends POIXMLDocumentPart {
+ private final Hashtable<Integer, String> numberFormats = new Hashtable<Integer,String>();
private final List<XSSFFont> fonts = new ArrayList<XSSFFont>();
private final List<XSSFCellFill> fills = new ArrayList<XSSFCellFill>();
private final List<XSSFCellBorder> borders = new ArrayList<XSSFCellBorder>();
@@ -77,7 +77,7 @@ public class StylesTable extends POIXMLDocumentPart implements StylesSource {
/**
* The first style id available for use as a custom style
*/
- public static final long FIRST_CUSTOM_STYLE_ID = 165;
+ public static final int FIRST_CUSTOM_STYLE_ID = 165;
private StyleSheetDocument doc;
@@ -85,7 +85,7 @@ public class StylesTable extends POIXMLDocumentPart implements StylesSource {
* Create a new, empty StylesTable
*/
public StylesTable() {
- super(null, null);
+ super();
doc = StyleSheetDocument.Factory.newInstance();
doc.addNewStyleSheet();
// Initialization required in order to make the document readable by MSExcel
@@ -109,7 +109,7 @@ public class StylesTable extends POIXMLDocumentPart implements StylesSource {
// Grab all the different bits we care about
if(doc.getStyleSheet().getNumFmts() != null)
for (CTNumFmt nfmt : doc.getStyleSheet().getNumFmts().getNumFmtArray()) {
- numberFormats.put(nfmt.getNumFmtId(), nfmt.getFormatCode());
+ numberFormats.put((int)nfmt.getNumFmtId(), nfmt.getFormatCode());
}
if(doc.getStyleSheet().getFonts() != null){
int idx = 0;
@@ -150,14 +150,14 @@ public class StylesTable extends POIXMLDocumentPart implements StylesSource {
// Start of style related getters and setters
// ===========================================================
- public String getNumberFormatAt(long idx) {
+ public String getNumberFormatAt(int idx) {
return numberFormats.get(idx);
}
- public synchronized long putNumberFormat(String fmt) {
+ public synchronized int putNumberFormat(String fmt) {
if (numberFormats.containsValue(fmt)) {
// Find the key, and return that
- for(Enumeration<Long> keys = numberFormats.keys(); keys.hasMoreElements();) {
- Long key = keys.nextElement();
+ for(Enumeration<Integer> keys = numberFormats.keys(); keys.hasMoreElements();) {
+ int key = keys.nextElement();
if(numberFormats.get(key).equals(fmt)) {
return key;
}
@@ -166,7 +166,7 @@ public class StylesTable extends POIXMLDocumentPart implements StylesSource {
}
// Find a spare key, and add that
- long newKey = FIRST_CUSTOM_STYLE_ID;
+ int newKey = FIRST_CUSTOM_STYLE_ID;
while(numberFormats.containsKey(newKey)) {
newKey++;
}
@@ -174,11 +174,11 @@ public class StylesTable extends POIXMLDocumentPart implements StylesSource {
return newKey;
}
- public XSSFFont getFontAt(long idx) {
+ public XSSFFont getFontAt(int idx) {
return fonts.get((int)idx);
}
- public long putFont(Font font) {
+ public int putFont(Font font) {
int idx = fonts.indexOf(font);
if (idx != -1) {
return idx;
@@ -187,7 +187,7 @@ public class StylesTable extends POIXMLDocumentPart implements StylesSource {
return fonts.size() - 1;
}
- public XSSFCellStyle getStyleAt(long idx) {
+ public XSSFCellStyle getStyleAt(int idx) {
int styleXfId = 0;
// 0 is the empty default
@@ -197,7 +197,7 @@ public class StylesTable extends POIXMLDocumentPart implements StylesSource {
return new XSSFCellStyle((int) idx, styleXfId, this);
}
- public synchronized long putStyle(CellStyle style) {
+ public synchronized int putStyle(CellStyle style) {
XSSFCellStyle xStyle = (XSSFCellStyle)style;
CTXf mainXF = xStyle.getCoreXf();
@@ -241,7 +241,7 @@ public class StylesTable extends POIXMLDocumentPart implements StylesSource {
return fills.size() - 1;
}
- public CTXf getCellXfAt(long idx) {
+ public CTXf getCellXfAt(int idx) {
return xfs.get((int) idx);
}
public int putCellXf(CTXf cellXf) {
@@ -249,7 +249,7 @@ public class StylesTable extends POIXMLDocumentPart implements StylesSource {
return xfs.size();
}
- public CTXf getCellStyleXfAt(long idx) {
+ public CTXf getCellStyleXfAt(int idx) {
return styleXfs.get((int) idx);
}
public int putCellStyleXf(CTXf cellStyleXf) {
@@ -328,7 +328,7 @@ public class StylesTable extends POIXMLDocumentPart implements StylesSource {
// Formats
CTNumFmts formats = CTNumFmts.Factory.newInstance();
formats.setCount(numberFormats.size());
- for (Entry<Long, String> fmt : numberFormats.entrySet()) {
+ for (Entry<Integer, String> fmt : numberFormats.entrySet()) {
CTNumFmt ctFmt = formats.addNewNumFmt();
ctFmt.setNumFmtId(fmt.getKey());
ctFmt.setFormatCode(fmt.getValue());
@@ -460,14 +460,14 @@ public class StylesTable extends POIXMLDocumentPart implements StylesSource {
return xssfFont;
}
- public CTDxf getDxf(long idx) {
+ public CTDxf getDxf(int idx) {
if(dxfs.size()==0)
return CTDxf.Factory.newInstance();
else
return dxfs.get((int) idx);
}
- public long putDxf(CTDxf dxf) {
+ public int putDxf(CTDxf dxf) {
this.dxfs.add(dxf);
return this.dxfs.size();
}
diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java
index 87ba105e6c..b7e77095ec 100644
--- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java
+++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java
@@ -383,7 +383,7 @@ public final class XSSFCell implements Cell {
*/
public XSSFCellStyle getCellStyle() {
long idx = cell.isSetS() ? cell.getS() : 0;
- return stylesSource.getStyleAt(idx);
+ return stylesSource.getStyleAt((int)idx);
}
/**
diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java
index c477caa1cd..eba46909d0 100644
--- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java
+++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java
@@ -77,7 +77,7 @@ public class XSSFCellStyle implements CellStyle, Cloneable {
/**
* Creates an empty Cell Style
*/
- public XSSFCellStyle(StylesSource stylesSource) {
+ public XSSFCellStyle(StylesTable stylesSource) {
this.stylesSource = (StylesTable)stylesSource;
// We need a new CTXf for the main styles
// TODO decide on a style ctxf
@@ -94,7 +94,7 @@ public class XSSFCellStyle implements CellStyle, Cloneable {
* workbook (if they're not, it won't work)
* @throws IllegalArgumentException if there's a workbook mis-match
*/
- public void verifyBelongsToStylesSource(StylesSource src) {
+ public void verifyBelongsToStylesSource(StylesTable src) {
if(this.stylesSource != src) {
throw new IllegalArgumentException("This Style does not belong to the supplied Workbook Stlyes Source. Are you trying to assign a style from one workbook to the cell of a differnt workbook?");
}
diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFComment.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFComment.java
index 1a3d391d07..2f1519a859 100644
--- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFComment.java
+++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFComment.java
@@ -20,6 +20,7 @@ import org.apache.poi.ss.usermodel.Comment;
import org.apache.poi.ss.usermodel.CommentsSource;
import org.apache.poi.ss.usermodel.RichTextString;
import org.apache.poi.xssf.usermodel.helpers.RichTextStringHelper;
+import org.apache.poi.xssf.model.CommentsTable;
import org.apache.poi.ss.util.CellReference;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTComment;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRst;
@@ -27,7 +28,7 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRst;
public class XSSFComment implements Comment {
private CTComment comment;
- private CommentsSource comments;
+ private CommentsTable comments;
/**
* Creates a new XSSFComment, associated with a given
@@ -35,13 +36,13 @@ public class XSSFComment implements Comment {
* If, as an end user, you want a new XSSFComment
* object, the please ask your sheet for one.
*/
- public XSSFComment(CommentsSource comments, CTComment comment) {
+ public XSSFComment(CommentsTable comments, CTComment comment) {
this.comment = comment;
this.comments = comments;
}
public String getAuthor() {
- return comments.getAuthor(comment.getAuthorId());
+ return comments.getAuthor((int)comment.getAuthorId());
}
public int getColumn() {
diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDataFormat.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDataFormat.java
index 6b5191d845..863932f311 100644
--- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDataFormat.java
+++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDataFormat.java
@@ -18,22 +18,24 @@ package org.apache.poi.xssf.usermodel;
import org.apache.poi.ss.usermodel.DataFormat;
import org.apache.poi.ss.usermodel.StylesSource;
+import org.apache.poi.xssf.model.StylesTable;
/**
* Handles data formats for XSSF.
* TODO Figure out if there are build in formats too
*/
public class XSSFDataFormat implements DataFormat {
- private StylesSource stylesSource;
- public XSSFDataFormat(StylesSource stylesSource) {
- this.stylesSource = stylesSource;
- }
-
- public short getFormat(String format) {
- return (short)stylesSource.putNumberFormat(format);
- }
+ private StylesTable stylesSource;
- public String getFormat(short index) {
- return stylesSource.getNumberFormatAt((long)index);
- }
+ protected XSSFDataFormat(StylesTable stylesSource) {
+ this.stylesSource = stylesSource;
+ }
+
+ public short getFormat(String format) {
+ return (short)stylesSource.putNumberFormat(format);
+ }
+
+ public String getFormat(short index) {
+ return stylesSource.getNumberFormatAt(index);
+ }
}
diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDialogsheet.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDialogsheet.java
index 06751387ff..08e2a943cb 100644
--- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDialogsheet.java
+++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDialogsheet.java
@@ -19,6 +19,7 @@ package org.apache.poi.xssf.usermodel;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.POIXMLException;
import org.apache.xmlbeans.XmlException;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.*;
import org.openxml4j.opc.PackagePart;
@@ -26,13 +27,14 @@ import org.openxml4j.opc.PackageRelationship;
import java.io.IOException;
+//YK: TODO: this is only a prototype
public class XSSFDialogsheet extends XSSFSheet implements Sheet{
protected CTDialogsheet dialogsheet;
- public XSSFDialogsheet(XSSFSheet sheet) {
- this.packagePart = sheet.getPackagePart();
- this.packageRel = sheet.getPackageRelationship();
+ protected XSSFDialogsheet(XSSFSheet sheet) {
+ super(sheet.getPackagePart(), sheet.getPackageRelationship());
this.dialogsheet = CTDialogsheet.Factory.newInstance();
+ this.worksheet = CTWorksheet.Factory.newInstance();
}
public XSSFRow createRow(int rowNum) {
diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDrawing.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDrawing.java
index 82f6ec0fcb..f64ddf3e3f 100755
--- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDrawing.java
+++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDrawing.java
@@ -19,7 +19,6 @@ package org.apache.poi.xssf.usermodel;
import org.apache.poi.POIXMLDocumentPart;
import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlOptions;
-import org.apache.xmlbeans.XmlObject;
import org.openxml4j.opc.*;
import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.*;
import org.openxmlformats.schemas.officeDocument.x2006.relationships.STRelationshipId;
@@ -29,8 +28,6 @@ import java.io.IOException;
import java.io.OutputStream;
import java.util.Map;
import java.util.HashMap;
-import java.util.List;
-import java.util.LinkedList;
/**
* Represents a SpreadsheetML drawing
@@ -48,8 +45,8 @@ public class XSSFDrawing extends POIXMLDocumentPart {
*
* @see org.apache.poi.xssf.usermodel.XSSFSheet#createDrawingPatriarch()
*/
- public XSSFDrawing() {
- super(null, null);
+ protected XSSFDrawing() {
+ super();
drawing = newDrawing();
}
@@ -61,7 +58,7 @@ public class XSSFDrawing extends POIXMLDocumentPart {
* @param rel the package relationship holding this drawing,
* the relationship type must be http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing
*/
- public XSSFDrawing(PackagePart part, PackageRelationship rel) throws IOException, XmlException {
+ protected XSSFDrawing(PackagePart part, PackageRelationship rel) throws IOException, XmlException {
super(part, rel);
drawing = CTDrawing.Factory.parse(part.getInputStream());
}
@@ -157,7 +154,7 @@ public class XSSFDrawing extends POIXMLDocumentPart {
XSSFWorkbook wb = (XSSFWorkbook)getParent().getParent();
XSSFPictureData data = wb.getAllPictures().get(pictureIndex);
PackagePartName ppName = data.getPackagePart().getPartName();
- PackageRelationship rel = packagePart.addRelationship(ppName, TargetMode.INTERNAL, XSSFRelation.IMAGES.getRelation());
+ PackageRelationship rel = getPackagePart().addRelationship(ppName, TargetMode.INTERNAL, XSSFRelation.IMAGES.getRelation());
addRelation(new XSSFPictureData(data.getPackagePart(), rel));
return rel;
}
diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFactory.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFactory.java
index 0900183e85..40d55f2eab 100755
--- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFactory.java
+++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFactory.java
@@ -39,8 +39,10 @@ public class XSSFFactory extends POIXMLFactory {
}
+ private static final XSSFFactory inst = new XSSFFactory();
+
public static XSSFFactory getInstance(){
- return new XSSFFactory();
+ return inst;
}
public POIXMLDocumentPart createDocumentPart(PackageRelationship rel, PackagePart part){
@@ -52,7 +54,7 @@ public class XSSFFactory extends POIXMLFactory {
try {
Class cls = descriptor.getRelationClass();
- Constructor<? extends POIXMLDocumentPart> constructor = cls.getConstructor(PackagePart.class, PackageRelationship.class);
+ Constructor<? extends POIXMLDocumentPart> constructor = cls.getDeclaredConstructor(PackagePart.class, PackageRelationship.class);
return constructor.newInstance(part, rel);
} catch (Exception e){
throw new POIXMLException(e);
@@ -62,7 +64,7 @@ public class XSSFFactory extends POIXMLFactory {
public POIXMLDocumentPart newDocumentPart(POIXMLRelation descriptor){
try {
Class cls = descriptor.getRelationClass();
- Constructor<? extends POIXMLDocumentPart> constructor = cls.getConstructor();
+ Constructor<? extends POIXMLDocumentPart> constructor = cls.getDeclaredConstructor();
return constructor.newInstance();
} catch (Exception e){
throw new POIXMLException(e);
diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFirstFooter.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFirstFooter.java
index 7d2df77d75..bd5c0f1f93 100644
--- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFirstFooter.java
+++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFirstFooter.java
@@ -23,7 +23,7 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTHeaderFooter;
public class XSSFFirstFooter extends XSSFHeaderFooter implements Footer{
- public XSSFFirstFooter(CTHeaderFooter headerFooter) {
+ protected XSSFFirstFooter(CTHeaderFooter headerFooter) {
super(headerFooter);
}
diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFirstHeader.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFirstHeader.java
index 27a7520d42..9cd4044855 100644
--- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFirstHeader.java
+++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFirstHeader.java
@@ -23,7 +23,7 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTHeaderFooter;
public class XSSFFirstHeader extends XSSFHeaderFooter implements Header{
- public XSSFFirstHeader(CTHeaderFooter headerFooter) {
+ protected XSSFFirstHeader(CTHeaderFooter headerFooter) {
super(headerFooter);
}
diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFOddHeader.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFOddHeader.java
index 5ee37cc00a..5f1aa9c036 100644
--- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFOddHeader.java
+++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFOddHeader.java
@@ -23,7 +23,7 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTHeaderFooter;
public class XSSFOddHeader extends XSSFHeaderFooter implements Header{
- public XSSFOddHeader(CTHeaderFooter headerFooter) {
+ protected XSSFOddHeader(CTHeaderFooter headerFooter) {
super(headerFooter);
}
diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPictureData.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPictureData.java
index eebd5d6d4b..851c85af5d 100644
--- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPictureData.java
+++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPictureData.java
@@ -52,8 +52,8 @@ public class XSSFPictureData extends POIXMLDocumentPart implements PictureData {
*
* @see org.apache.poi.xssf.usermodel.XSSFWorkbook#addPicture(byte[], int)
*/
- public XSSFPictureData() {
- super(null, null);
+ protected XSSFPictureData() {
+ super();
}
/**
@@ -63,7 +63,7 @@ public class XSSFPictureData extends POIXMLDocumentPart implements PictureData {
* @param rel the package relationship holding this drawing,
* the relationship type must be http://schemas.openxmlformats.org/officeDocument/2006/relationships/image
*/
- public XSSFPictureData(PackagePart part, PackageRelationship rel) {
+ protected XSSFPictureData(PackagePart part, PackageRelationship rel) {
super(part, rel);
}
diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPrintSetup.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPrintSetup.java
index 22f48f9407..6231c47ba7 100755
--- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPrintSetup.java
+++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPrintSetup.java
@@ -31,7 +31,7 @@ public class XSSFPrintSetup implements PrintSetup {
private CTPageMargins pageMargins;
- public XSSFPrintSetup(CTWorksheet worksheet) {
+ protected XSSFPrintSetup(CTWorksheet worksheet) {
this.ctWorksheet = worksheet;
this.pageSetup = ctWorksheet.getPageSetup() == null ? ctWorksheet.addNewPageSetup() : ctWorksheet.getPageSetup();
this.pageMargins = ctWorksheet.getPageMargins() == null ? ctWorksheet.addNewPageMargins() : ctWorksheet.getPageMargins();
diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFShape.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFShape.java
index ad6c27271b..cd6c2208df 100755
--- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFShape.java
+++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFShape.java
@@ -16,11 +16,6 @@
==================================================================== */
package org.apache.poi.xssf.usermodel;
-import org.apache.xmlbeans.XmlObject;
-import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTTwoCellAnchor;
-import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTAbsoluteAnchor;
-import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTOneCellAnchor;
-import org.openxmlformats.schemas.drawingml.x2006.chartDrawing.CTGroupShape;
import org.openxmlformats.schemas.drawingml.x2006.main.*;
/**
diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFShapeGroup.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFShapeGroup.java
index f483393a70..686a8f0378 100755
--- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFShapeGroup.java
+++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFShapeGroup.java
@@ -18,11 +18,7 @@ package org.apache.poi.xssf.usermodel;
import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.*;
import org.openxmlformats.schemas.drawingml.x2006.main.*;
-import org.openxml4j.opc.PackagePartName;
import org.openxml4j.opc.PackageRelationship;
-import org.openxml4j.opc.TargetMode;
-
-import java.util.List;
/**
* This object specifies a group shape that represents many shapes grouped together. This shape is to be treated
@@ -43,7 +39,7 @@ public class XSSFShapeGroup extends XSSFShape {
* @param drawing the XSSFDrawing that owns this shape
* @param ctGroup the XML bean that stores this group content
*/
- public XSSFShapeGroup(XSSFDrawing drawing, CTGroupShape ctGroup) {
+ protected XSSFShapeGroup(XSSFDrawing drawing, CTGroupShape ctGroup) {
this.drawing = drawing;
this.ctGroup = ctGroup;
}
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 8ee5cd6f5c..8efef69b48 100644
--- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
+++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
@@ -24,16 +24,13 @@ import javax.xml.namespace.QName;
import org.apache.poi.hssf.util.PaneInformation;
import org.apache.poi.ss.usermodel.CellStyle;
-import org.apache.poi.ss.usermodel.CommentsSource;
import org.apache.poi.ss.usermodel.Footer;
import org.apache.poi.ss.usermodel.Header;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.ss.util.CellReference;
-import org.apache.poi.ss.util.Region;
import org.apache.poi.xssf.model.CommentsTable;
-import org.apache.poi.xssf.model.Control;
import org.apache.poi.xssf.usermodel.helpers.ColumnHelper;
import org.apache.poi.POIXMLDocumentPart;
import org.apache.poi.POIXMLException;
@@ -44,6 +41,7 @@ import org.apache.xmlbeans.XmlException;
import org.openxml4j.opc.PackagePart;
import org.openxml4j.opc.PackageRelationship;
import org.openxml4j.opc.PackageRelationshipCollection;
+import org.openxml4j.exceptions.InvalidFormatException;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.*;
import org.openxmlformats.schemas.officeDocument.x2006.relationships.STRelationshipId;
@@ -71,20 +69,30 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
protected CTSheet sheet;
protected CTWorksheet worksheet;
- protected TreeMap<Integer, Row> rows;
- protected List<XSSFHyperlink> hyperlinks;
- protected ColumnHelper columnHelper;
- private CommentsSource sheetComments;
+ private TreeMap<Integer, Row> rows;
+ private List<XSSFHyperlink> hyperlinks;
+ private ColumnHelper columnHelper;
+ private CommentsTable sheetComments;
- public XSSFSheet() {
- super(null, null);
- this.worksheet = newSheet();
- initialize();
+ /**
+ * Creates new XSSFSheet - called by XSSFWorkbook to create a sheet from scratch.
+ *
+ * @see org.apache.poi.xssf.usermodel.XSSFWorkbook#createSheet()
+ */
+ protected XSSFSheet() {
+ super();
+ onDocumentCreate();
}
- public XSSFSheet(PackagePart part, PackageRelationship rel) throws IOException, XmlException {
+ /**
+ * Creates an XSSFSheet representing the given package part and relationship.
+ * Should only be called by XSSFWorkbook when reading in an exisiting file.
+ *
+ * @param part - The package part that holds xml data represenring this sheet.
+ * @param rel - the relationship of the given package part in the underlying OPC package
+ */
+ protected XSSFSheet(PackagePart part, PackageRelationship rel) {
super(part, rel);
- worksheet = WorksheetDocument.Factory.parse(part.getInputStream()).getWorksheet();
}
/**
@@ -96,25 +104,81 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
return (XSSFWorkbook)getParent();
}
- protected void initialize(){
- if (this.worksheet.getSheetData() == null) {
- this.worksheet.addNewSheetData();
+ /**
+ * Initialize worksheet data when reading in an exisiting file.
+ */
+ @Override
+ protected void onDocumentRead() {
+ try {
+ worksheet = WorksheetDocument.Factory.parse(getPackagePart().getInputStream()).getWorksheet();
+ } catch (XmlException e){
+ throw new POIXMLException(e);
+ } catch (IOException e){
+ throw new POIXMLException(e);
}
- initRows(this.worksheet);
- initColumns(this.worksheet);
+
+ initRows(worksheet);
+ columnHelper = new ColumnHelper(worksheet);
for(POIXMLDocumentPart p : getRelations()){
if(p instanceof CommentsTable) sheetComments = (CommentsTable)p;
}
+ // Process external hyperlinks for the sheet, if there are any
+ initHyperlinks();
+ }
+
+ /**
+ * Initialize worksheet data when creating a new sheet.
+ */
+ @Override
+ protected void onDocumentCreate(){
+ worksheet = newSheet();
+ initRows(worksheet);
+ columnHelper = new ColumnHelper(worksheet);
+ hyperlinks = new ArrayList<XSSFHyperlink>();
+ }
+
+ private void initRows(CTWorksheet worksheet) {
+ rows = new TreeMap<Integer, Row>();
+ for (CTRow row : worksheet.getSheetData().getRowArray()) {
+ XSSFRow r = new XSSFRow(row, this);
+ rows.put(r.getRowNum(), r);
+ }
+ }
+
+ /**
+ * Read hyperlink relations, link them with CTHyperlink beans in this worksheet
+ * and initialize the internal array of XSSFHyperlink objects
+ */
+ private void initHyperlinks() {
hyperlinks = new ArrayList<XSSFHyperlink>();
+
+ if(!worksheet.isSetHyperlinks()) return;
+
+ try {
+ PackageRelationshipCollection hyperRels =
+ getPackagePart().getRelationshipsByType(XSSFRelation.SHEET_HYPERLINKS.getRelation());
+
+ // Turn each one into a XSSFHyperlink
+ for(CTHyperlink hyperlink : worksheet.getHyperlinks().getHyperlinkArray()) {
+ PackageRelationship hyperRel = null;
+ if(hyperlink.getId() != null) {
+ hyperRel = hyperRels.getRelationshipByID(hyperlink.getId());
+ }
+
+ hyperlinks.add( new XSSFHyperlink(hyperlink, hyperRel) );
+ }
+ } catch (InvalidFormatException e){
+ throw new POIXMLException(e);
+ }
}
/**
- * Create a new CTWorksheet instance and setup default values
+ * Create a new CTWorksheet instance with all values set to defaults
*
* @return a new instance
*/
- protected static CTWorksheet newSheet(){
+ private static CTWorksheet newSheet(){
CTWorksheet worksheet = CTWorksheet.Factory.newInstance();
CTSheetFormatPr ctFormat = worksheet.addNewSheetFormatPr();
ctFormat.setDefaultRowHeight(15.0);
@@ -137,17 +201,12 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
return worksheet;
}
- public List<Control> getControls()
- {
- return null;
- }
-
/**
- * Provide access to the underlying XML bean
+ * Provide access to the CTWorksheet bean holding this sheet's data
*
- * @return the underlying CTWorksheet bean
+ * @return the CTWorksheet bean holding this sheet's data
*/
- public CTWorksheet getWorksheet() {
+ public CTWorksheet getCTWorksheet() {
return this.worksheet;
}
@@ -155,48 +214,16 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
return columnHelper;
}
- protected void initRows(CTWorksheet worksheet) {
- this.rows = new TreeMap<Integer, Row>();
- for (CTRow row : worksheet.getSheetData().getRowArray()) {
- XSSFRow r = new XSSFRow(row, this);
- this.rows.put(r.getRowNum(), r);
- }
- }
-
- protected void initColumns(CTWorksheet worksheet) {
- columnHelper = new ColumnHelper(worksheet);
- }
-
- protected void initHyperlinks(PackageRelationshipCollection hyperRels) {
- if(worksheet.getHyperlinks() == null) return;
-
- // Turn each one into a XSSFHyperlink
- for(CTHyperlink hyperlink : worksheet.getHyperlinks().getHyperlinkArray()) {
- PackageRelationship hyperRel = null;
- if(hyperlink.getId() != null) {
- hyperRel = hyperRels.getRelationshipByID(hyperlink.getId());
- }
-
- hyperlinks.add(
- new XSSFHyperlink(hyperlink, hyperRel)
- );
- }
- }
-
- protected CTSheet getSheet() {
- return this.sheet;
- }
+ /**
+ * Sdds a merged region of cells (hence those cells form one)
+ *
+ * @param cra (rowfrom/colfrom-rowto/colto) to merge
+ * @return index of this region
+ */
public int addMergedRegion(CellRangeAddress cra) {
- Region r = new Region(cra.getFirstRow(), (short)cra.getFirstColumn(),
- cra.getLastRow(), (short)cra.getLastColumn());
- return addMergedRegion(r);
- }
-
-
- public int addMergedRegion(Region region) {
CTMergeCells ctMergeCells = worksheet.isSetMergeCells() ? worksheet.getMergeCells() : worksheet.addNewMergeCells();
CTMergeCell ctMergeCell = ctMergeCells.addNewMergeCell();
- ctMergeCell.setRef(region.getRegionRef());
+ ctMergeCell.setRef(cra.formatAsString());
return ctMergeCells.sizeOfMergeCellArray();
}
@@ -215,11 +242,11 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
/**
* Adjusts the column width to fit the contents.
- *
+ * <p>
* This process can be relatively slow on large sheets, so this should
* normally only be called once per column, at the end of your
* processing.
- *
+ * </p>
* You can specify whether the content of merged cells should be considered or ignored.
* Default is to ignore merged cells.
*
@@ -305,7 +332,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
if (sheetComments == null) {
sheetComments = (CommentsTable)createRelationship(XSSFRelation.SHEET_COMMENTS, XSSFFactory.getInstance(), (int)sheet.getSheetId());
}
- return (XSSFComment)sheetComments.addComment();
+ return sheetComments.addComment();
}
/**
@@ -341,19 +368,9 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
getPane().setActivePane(STPane.Enum.forInt(activePane));
}
- public boolean getAlternateExpression() {
- // TODO Auto-generated method stub
- return false;
- }
-
- public boolean getAlternateFormula() {
- // TODO Auto-generated method stub
- return false;
- }
-
public XSSFComment getCellComment(int row, int column) {
if (sheetComments == null) return null;
- else return (XSSFComment)sheetComments.findCellComment(row, column);
+ else return sheetComments.findCellComment(row, column);
}
public XSSFHyperlink getHyperlink(int row, int column) {
@@ -480,13 +497,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
* @return the number of the first logical row on the sheet, zero based
*/
public int getFirstRowNum() {
- for (Iterator<Row> it = rowIterator() ; it.hasNext() ; ) {
- Row row = it.next();
- if (row != null) {
- return row.getRowNum();
- }
- }
- return -1;
+ return rows.size() == 0 ? -1 : rows.firstKey();
}
/**
@@ -602,14 +613,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
}
public int getLastRowNum() {
- int lastRowNum = -1;
- for (Iterator<Row> it = rowIterator() ; it.hasNext() ; ) {
- Row row = it.next();
- if (row != null) {
- lastRowNum = row.getRowNum();
- }
- }
- return lastRowNum;
+ return rows.size() == 0 ? -1 : rows.lastKey();
}
public short getLeftCol() {
@@ -618,43 +622,74 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
return cellReference.getCol();
}
+ /**
+ * Gets the size of the margin in inches.
+ *
+ * @param margin which margin to get
+ * @return the size of the margin
+ * @see Sheet#LeftMargin
+ * @see Sheet#RightMargin
+ * @see Sheet#TopMargin
+ * @see Sheet#BottomMargin
+ * @see Sheet#HeaderMargin
+ * @see Sheet#FooterMargin
+ */
public double getMargin(short margin) {
- CTPageMargins pageMargins = getSheetTypePageMargins();
+ if (!worksheet.isSetPageMargins()) return 0;
+
+ CTPageMargins pageMargins = worksheet.getPageMargins();
switch (margin) {
- case LeftMargin:
- return pageMargins.getLeft();
- case RightMargin:
- return pageMargins.getRight();
- case TopMargin:
- return pageMargins.getTop();
- case BottomMargin:
- return pageMargins.getBottom();
- case HeaderMargin:
- return pageMargins.getHeader();
- case FooterMargin:
- return pageMargins.getFooter();
- default :
- throw new POIXMLException( "Unknown margin constant: " + margin );
+ case LeftMargin:
+ return pageMargins.getLeft();
+ case RightMargin:
+ return pageMargins.getRight();
+ case TopMargin:
+ return pageMargins.getTop();
+ case BottomMargin:
+ return pageMargins.getBottom();
+ case HeaderMargin:
+ return pageMargins.getHeader();
+ case FooterMargin:
+ return pageMargins.getFooter();
+ default :
+ throw new POIXMLException("Unknown margin constant: " + margin);
}
}
- protected CTPageMargins getSheetTypePageMargins() {
- if (worksheet.getPageMargins() == null) {
- worksheet.setPageMargins(CTPageMargins.Factory.newInstance());
+ /**
+ * Sets the size of the margin in inches.
+ *
+ * @param margin which margin to get
+ * @param size the size of the margin
+ * @see Sheet#LeftMargin
+ * @see Sheet#RightMargin
+ * @see Sheet#TopMargin
+ * @see Sheet#BottomMargin
+ * @see Sheet#HeaderMargin
+ * @see Sheet#FooterMargin
+ */
+ public void setMargin(short margin, double size) {
+ CTPageMargins pageMargins = worksheet.isSetPageMargins() ?
+ worksheet.getPageMargins() : worksheet.addNewPageMargins();
+ switch (margin) {
+ case LeftMargin:
+ pageMargins.setLeft(size);
+ case RightMargin:
+ pageMargins.setRight(size);
+ case TopMargin:
+ pageMargins.setTop(size);
+ case BottomMargin:
+ pageMargins.setBottom(size);
+ case HeaderMargin:
+ pageMargins.setHeader(size);
+ case FooterMargin:
+ pageMargins.setFooter(size);
}
- return worksheet.getPageMargins();
- }
-
- public Region getMergedRegionAt(int index) {
- CTMergeCells ctMergeCells = worksheet.getMergeCells();
- if(ctMergeCells == null) throw new IllegalStateException("This worksheet does not contain merged regions");
-
- CTMergeCell ctMergeCell = ctMergeCells.getMergeCellArray(index);
- return new Region(ctMergeCell.getRef());
}
/**
* @return the merged region at the specified index
+ * @throws IllegalStateException if this worksheet does not contain merged regions
*/
public CellRangeAddress getMergedRegion(int index) {
CTMergeCells ctMergeCells = worksheet.getMergeCells();
@@ -667,6 +702,11 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
return new CellRangeAddress(cell1.getRow(), cell2.getRow(), cell1.getCol(), cell2.getCol());
}
+ /**
+ * Returns the number of merged regions defined in this worksheet
+ *
+ * @return number of merged regions in this worksheet
+ */
public int getNumMergedRegions() {
CTMergeCells ctMergeCells = worksheet.getMergeCells();
return ctMergeCells == null ? 0 : ctMergeCells.sizeOfMergeCellArray();
@@ -676,38 +716,36 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
return hyperlinks.size();
}
- public boolean getObjectProtect() {
- // TODO Auto-generated method stub
- return false;
- }
-
public PaneInformation getPaneInformation() {
// TODO Auto-generated method stub
return null;
}
- public short getPassword() {
- // TODO Auto-generated method stub
- return 0;
- }
-
+ /**
+ * Returns the number of phsyically defined rows (NOT the number of rows in the sheet)
+ *
+ * @return the number of phsyically defined rows
+ */
public int getPhysicalNumberOfRows() {
- int counter = 0;
- for (Iterator<Row> it = rowIterator() ; it.hasNext() ; ) {
- if (it.next() != null) {
- counter++;
- }
- }
- return counter;
+ return rows.size();
}
+ /**
+ * Gets the print setup object.
+ *
+ * @return The user model for the print setup object.
+ */
public XSSFPrintSetup getPrintSetup() {
- return new XSSFPrintSetup(getWorksheet());
+ return new XSSFPrintSetup(worksheet);
}
+ /**
+ * Answer whether protection is enabled or disabled
+ *
+ * @return true => protection enabled; false => protection disabled
+ */
public boolean getProtect() {
- // TODO Auto-generated method stub
- return false;
+ return worksheet.isSetSheetProtection() && worksheet.getSheetProtection().getSheet();
}
/**
@@ -757,8 +795,8 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
public boolean getRowSumsBelow() {
CTSheetPr sheetPr = worksheet.getSheetPr();
CTOutlinePr outlinePr = (sheetPr != null && sheetPr.isSetOutlinePr())
- ? sheetPr.getOutlinePr() : CTOutlinePr.Factory.newInstance();
- return outlinePr.getSummaryBelow();
+ ? sheetPr.getOutlinePr() : null;
+ return outlinePr == null || outlinePr.getSummaryBelow();
}
/**
@@ -821,8 +859,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
*/
private CTOutlinePr ensureOutlinePr(){
CTSheetPr sheetPr = worksheet.isSetSheetPr() ? worksheet.getSheetPr() : worksheet.addNewSheetPr();
- CTOutlinePr outlinePr = sheetPr.isSetOutlinePr() ? sheetPr.getOutlinePr() : sheetPr.addNewOutlinePr();
- return outlinePr;
+ return sheetPr.isSetOutlinePr() ? sheetPr.getOutlinePr() : sheetPr.addNewOutlinePr();
}
/**
@@ -831,14 +868,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
* @return true => protection enabled; false => protection disabled
*/
public boolean getScenarioProtect() {
- return getSheetTypeProtection().getScenarios();
- }
-
- protected CTSheetProtection getSheetTypeProtection() {
- if (worksheet.getSheetProtection() == null) {
- worksheet.setSheetProtection(CTSheetProtection.Factory.newInstance());
- }
- return worksheet.getSheetProtection();
+ return worksheet.isSetSheetProtection() && worksheet.getSheetProtection().getScenarios();
}
/**
@@ -1015,11 +1045,6 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
}
}
- public void protectSheet(String password) {
- // TODO Auto-generated method stub
-
- }
-
/**
* Removes a merged region of cells (hence letting them free)
*
@@ -1040,8 +1065,12 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
ctMergeCells.setMergeCellArray(mergeCellsArray);
}
+ /**
+ * Remove a row from this sheet. All cells contained in the row are removed as well
+ *
+ * @param row the row to remove.
+ */
public void removeRow(Row row) {
-
rows.remove(row.getRowNum());
}
@@ -1227,24 +1256,6 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
getSheetTypePrintOptions().setHorizontalCentered(value);
}
- public void setMargin(short margin, double size) {
- CTPageMargins pageMargins = getSheetTypePageMargins();
- switch (margin) {
- case LeftMargin:
- pageMargins.setLeft(size);
- case RightMargin:
- pageMargins.setRight(size);
- case TopMargin:
- pageMargins.setTop(size);
- case BottomMargin:
- pageMargins.setBottom(size);
- case HeaderMargin:
- pageMargins.setHeader(size);
- case FooterMargin:
- pageMargins.setFooter(size);
- }
- }
-
public void setPrintGridlines(boolean newPrintGridlines) {
getSheetTypePrintOptions().setGridLines(newPrintGridlines);
}
@@ -1474,7 +1485,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
getSheetTypeSheetFormatPr().setOutlineLevelCol(maxLevelCol);
}
- protected CTSheetViews getSheetTypeSheetViews() {
+ private CTSheetViews getSheetTypeSheetViews() {
if (worksheet.getSheetViews() == null) {
worksheet.setSheetViews(CTSheetViews.Factory.newInstance());
worksheet.getSheetViews().addNewSheetView();
@@ -1560,6 +1571,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
if(sheetComments == null) { return false; }
return (sheetComments.getNumberOfComments() > 0);
}
+
protected int getNumberOfComments() {
if(sheetComments == null) { return 0; }
return sheetComments.getNumberOfComments();
@@ -1593,7 +1605,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
* Returns the sheet's comments object if there is one,
* or null if not
*/
- protected CommentsSource getCommentsSourceIfExists() {
+ protected CommentsTable getCommentsSourceIfExists() {
return sheetComments;
}
diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFTextBox.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFTextBox.java
index 85032ab171..a708a759fd 100755
--- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFTextBox.java
+++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFTextBox.java
@@ -17,7 +17,6 @@
package org.apache.poi.xssf.usermodel;
import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.*;
-import org.openxmlformats.schemas.drawingml.x2006.main.*;
/**
* Represents a text box in a SpreadsheetML drawing.
diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
index eeb8b37a7a..ffdbceec16 100644
--- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
+++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
@@ -37,8 +37,8 @@ import org.apache.poi.xssf.model.*;
import org.apache.poi.POIXMLException;
import org.apache.xmlbeans.XmlObject;
import org.apache.xmlbeans.XmlOptions;
+import org.apache.xmlbeans.XmlException;
import org.openxml4j.exceptions.OpenXML4JException;
-import org.openxml4j.exceptions.InvalidFormatException;
import org.openxml4j.opc.*;
import org.openxml4j.opc.Package;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.*;
@@ -105,25 +105,11 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
private static POILogger log = POILogFactory.getLogger(XSSFWorkbook.class);
/**
- * The embedded OLE2 files in the OPC package
- */
- private List<PackagePart> embedds;
-
- /**
* Create a new SpreadsheetML workbook.
*/
public XSSFWorkbook() {
- super();
- onDocumentCreate();
- }
-
- /**
- * Constructs a XSSFWorkbook object given a file name.
- *
- * @param path the file name.
- */
- public XSSFWorkbook(String path) throws IOException {
- this(openPackage(path));
+ super(newPackage());
+ onWorkbookCreate();
}
/**
@@ -134,10 +120,26 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
*/
public XSSFWorkbook(Package pkg) throws IOException {
super(ensureWriteAccess(pkg));
+
+ //build a tree of POIXMLDocumentParts, this workbook being the root
+ try {
+ read(XSSFFactory.getInstance());
+ } catch (OpenXML4JException e){
+ throw new POIXMLException(e);
+ }
onDocumentRead();
}
/**
+ * Constructs a XSSFWorkbook object given a file name.
+ *
+ * @param path the file name.
+ */
+ public XSSFWorkbook(String path) throws IOException {
+ this(openPackage(path));
+ }
+
+ /**
* YK: current implementation of OpenXML4J is funny.
* Packages opened by Package.open(InputStream is) are read-only,
* there is no way to change or even save such an instance in a OutputStream.
@@ -154,19 +156,13 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
return pkg;
}
- /**
- * Initialize this workbook from the specified Package
- */
@Override
- protected void onDocumentRead() {
+ protected void onDocumentRead() throws IOException {
try {
- //build the POIXMLDocumentPart tree, this workbook is the root
- read(XSSFFactory.getInstance());
-
WorkbookDocument doc = WorkbookDocument.Factory.parse(getPackagePart().getInputStream());
this.workbook = doc.getWorkbook();
- HashMap<String, XSSFSheet> shIdMap = new HashMap<String, XSSFSheet>();
+ Map<String, XSSFSheet> shIdMap = new HashMap<String, XSSFSheet>();
for(POIXMLDocumentPart p : getRelations()){
if(p instanceof SharedStringsTable) sharedStringSource = (SharedStringsTable)p;
else if(p instanceof StylesTable) stylesSource = (StylesTable)p;
@@ -175,34 +171,16 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
}
}
- // Load individual sheets
- sheets = new LinkedList<XSSFSheet>();
- embedds = new LinkedList<PackagePart>();
+ // Load individual sheets. The order of sheets is defined by the order of CTSheet beans in the workbook
+ sheets = new ArrayList<XSSFSheet>(shIdMap.size());
for (CTSheet ctSheet : this.workbook.getSheets().getSheetArray()) {
- String id = ctSheet.getId();
- XSSFSheet sh = shIdMap.get(id);
- sh.sheet = ctSheet;
+ XSSFSheet sh = shIdMap.get(ctSheet.getId());
if(sh == null) {
log.log(POILogger.WARN, "Sheet with name " + ctSheet.getName() + " and r:id " + ctSheet.getId()+ " was defined, but didn't exist in package, skipping");
continue;
}
- //initialize internal arrays of rows and columns
- sh.initialize();
-
- PackagePart sheetPart = sh.getPackagePart();
- // Process external hyperlinks for the sheet,
- // if there are any
- PackageRelationshipCollection hyperlinkRels =
- sheetPart.getRelationshipsByType(XSSFRelation.SHEET_HYPERLINKS.getRelation());
- sh.initHyperlinks(hyperlinkRels);
-
- // Get the embeddings for the workbook
- for(PackageRelationship rel : sheetPart.getRelationshipsByType(XSSFRelation.OLEEMBEDDINGS.getRelation()))
- embedds.add(getTargetPart(rel)); // TODO: Add this reference to each sheet as well
-
- for(PackageRelationship rel : sheetPart.getRelationshipsByType(XSSFRelation.PACKEMBEDDINGS.getRelation()))
- embedds.add(getTargetPart(rel));
-
+ sh.sheet = ctSheet;
+ sh.onDocumentRead();
sheets.add(sh);
}
@@ -212,20 +190,22 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
}
// Process the named ranges
- namedRanges = new LinkedList<XSSFName>();
+ namedRanges = new ArrayList<XSSFName>();
if(workbook.getDefinedNames() != null) {
for(CTDefinedName ctName : workbook.getDefinedNames().getDefinedNameArray()) {
namedRanges.add(new XSSFName(ctName, this));
}
}
- } catch (Exception e) {
+ } catch (XmlException e) {
throw new POIXMLException(e);
}
}
- @Override
- protected void onDocumentCreate() {
+ /**
+ * Create a new CTWorkbook with all values set to default
+ */
+ private void onWorkbookCreate() {
workbook = CTWorkbook.Factory.newInstance();
CTBookViews bvs = workbook.addNewBookViews();
CTBookView bv = bvs.addNewWorkbookView();
@@ -235,15 +215,14 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
sharedStringSource = (SharedStringsTable)createRelationship(XSSFRelation.SHARED_STRINGS, XSSFFactory.getInstance());
stylesSource = (StylesTable)createRelationship(XSSFRelation.STYLES, XSSFFactory.getInstance());
- namedRanges = new LinkedList<XSSFName>();
- sheets = new LinkedList<XSSFSheet>();
- embedds = new LinkedList<PackagePart>();
+ namedRanges = new ArrayList<XSSFName>();
+ sheets = new ArrayList<XSSFSheet>();
}
/**
* Create a new SpreadsheetML package and setup the default minimal content
*/
- protected Package newPackage() throws IOException {
+ protected static Package newPackage() {
try {
Package pkg = Package.create(PackageHelper.createTempFile());
// Main part
@@ -256,7 +235,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
pkg.getPackageProperties().setCreatorProperty("Apache POI");
return pkg;
- } catch (InvalidFormatException e){
+ } catch (Exception e){
throw new POIXMLException(e);
}
}
@@ -266,7 +245,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
*
* @return the underlying CTWorkbook bean
*/
- public CTWorkbook getWorkbook() {
+ public CTWorkbook getCTWorkbook() {
return this.workbook;
}
@@ -345,7 +324,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
}
XSSFSheet clonedSheet = createSheet(name);
- clonedSheet.worksheet.set(srcSheet.worksheet);
+ clonedSheet.getCTWorksheet().set(srcSheet.getCTWorksheet());
return clonedSheet;
}
@@ -380,7 +359,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
}
/**
- * create a new Font and add it to the workbook's font table
+ * Create a new Font and add it to the workbook's font table
*
* @return new font object
*/
@@ -391,7 +370,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
}
/**
- * Creates a new named range and add it to the model
+ * Create a new named range and add it to the workbook's names table
*
* @return named range high level
*/
@@ -402,7 +381,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
}
/**
- * create an XSSFSheet for this workbook, adds it to the sheets and returns
+ * Create an XSSFSheet for this workbook, adds it to the sheets and returns
* the high level representation. Use this to create new sheets.
*
* @return XSSFSheet representing the new sheet.
@@ -413,25 +392,26 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
}
/**
- * create an XSSFSheet for this workbook, adds it to the sheets and returns
+ * Create an XSSFSheet for this workbook, adds it to the sheets and returns
* the high level representation. Use this to create new sheets.
*
* @param sheetname sheetname to set for the sheet, can't be duplicate, greater than 31 chars or contain /\?*[]
* @return XSSFSheet representing the new sheet.
+ * @throws IllegalArgumentException if the sheetname is invalid or the workbook already contains a sheet of this name
*/
public XSSFSheet createSheet(String sheetname) {
if (containsSheet( sheetname, sheets.size() ))
throw new IllegalArgumentException( "The workbook already contains a sheet of this name" );
+ CTSheet sheet = addSheet(sheetname);
+
int sheetNumber = getNumberOfSheets() + 1;
XSSFSheet wrapper = (XSSFSheet)createRelationship(XSSFRelation.WORKSHEET, XSSFFactory.getInstance(), sheetNumber);
-
- CTSheet sheet = addSheet(sheetname);
wrapper.sheet = sheet;
sheet.setId(wrapper.getPackageRelationship().getId());
sheet.setSheetId(sheetNumber);
if(sheets.size() == 0) wrapper.setSelected(true);
- this.sheets.add(wrapper);
+ sheets.add(wrapper);
return wrapper;
}
@@ -479,23 +459,14 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
public int getActiveSheetIndex() {
//activeTab (Active Sheet Index) Specifies an unsignedInt
//that contains the index to the active sheet in this book view.
- Long index = workbook.getBookViews().getWorkbookViewArray(0).getActiveTab();
- return index.intValue();
- }
-
- /**
- * Gets all embedded OLE2 objects from the Workbook.
- *
- * @return the list of embedded objects (a list of {@link org.openxml4j.opc.PackagePart} objects.)
- */
- public List getAllEmbeddedObjects() {
- return embedds;
+ return (int)workbook.getBookViews().getWorkbookViewArray(0).getActiveTab();
}
/**
* Gets all pictures from the Workbook.
*
* @return the list of pictures (a list of {@link XSSFPictureData} objects.)
+ * @see #addPicture(byte[], int)
*/
public List<XSSFPictureData> getAllPictures() {
if(pictures == null) {
@@ -642,10 +613,10 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
* @return XSSFSheet with the name provided or <code>null</code> if it does not exist
*/
public XSSFSheet getSheet(String name) {
- CTSheet[] sheets = this.workbook.getSheets().getSheetArray();
- for (int i = 0 ; i < sheets.length ; ++i) {
- if (name.equals(sheets[i].getName())) {
- return this.sheets.get(i);
+ CTSheet[] ctSheets = this.workbook.getSheets().getSheetArray();
+ for (int i = 0 ; i < ctSheets.length ; ++i) {
+ if (name.equalsIgnoreCase(ctSheets[i].getName())) {
+ return sheets.get(i);
}
}
return null;
@@ -656,22 +627,24 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
*
* @param index of the sheet number (0-based physical & logical)
* @return XSSFSheet at the provided index
+ * @throws IllegalArgumentException if the index is out of range (index
+ * &lt; 0 || index &gt;= getNumberOfSheets()).
*/
public XSSFSheet getSheetAt(int index) {
validateSheetIndex(index);
- return this.sheets.get(index);
+ return sheets.get(index);
}
/**
- * Returns the index of the sheet by his name
+ * Returns the index of the sheet by his name (case insensitive match)
*
* @param name the sheet name
- * @return index of the sheet (0 based)
+ * @return index of the sheet (0 based) or <tt>-1</tt if not found
*/
public int getSheetIndex(String name) {
CTSheet[] sheets = this.workbook.getSheets().getSheetArray();
for (int i = 0 ; i < sheets.length ; ++i) {
- if (name.equals(sheets[i].getName())) {
+ if (name.equalsIgnoreCase(sheets[i].getName())) {
return i;
}
}
@@ -1034,7 +1007,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
*/
public void write(OutputStream stream) throws IOException {
//force all children to commit their changes into the underlying OOXML Package
- save();
+ onSave();
getPackage().save(stream);
}
@@ -1147,6 +1120,17 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
* Get the document's embedded files.
*/
public List<PackagePart> getAllEmbedds() throws OpenXML4JException {
+ List<PackagePart> embedds = new LinkedList<PackagePart>();
+
+ for(XSSFSheet sheet : sheets){
+ // Get the embeddings for the workbook
+ for(PackageRelationship rel : sheet.getPackagePart().getRelationshipsByType(XSSFRelation.OLEEMBEDDINGS.getRelation()))
+ embedds.add(getTargetPart(rel));
+
+ for(PackageRelationship rel : sheet.getPackagePart().getRelationshipsByType(XSSFRelation.PACKEMBEDDINGS.getRelation()))
+ embedds.add(getTargetPart(rel));
+
+ }
return embedds;
}
}
diff --git a/src/ooxml/testcases/org/apache/poi/xssf/model/TestStylesTable.java b/src/ooxml/testcases/org/apache/poi/xssf/model/TestStylesTable.java
index 26ce623d24..fc16beaf77 100644
--- a/src/ooxml/testcases/org/apache/poi/xssf/model/TestStylesTable.java
+++ b/src/ooxml/testcases/org/apache/poi/xssf/model/TestStylesTable.java
@@ -118,8 +118,8 @@ public class TestStylesTable extends TestCase {
assertEquals(1, st._getStyleXfsSize());
assertEquals(0, st._getNumberFormatSize());
- long nf1 = st.putNumberFormat("yyyy-mm-dd");
- long nf2 = st.putNumberFormat("yyyy-mm-DD");
+ int nf1 = st.putNumberFormat("yyyy-mm-dd");
+ int nf2 = st.putNumberFormat("yyyy-mm-DD");
assertEquals(nf1, st.putNumberFormat("yyyy-mm-dd"));
st.putStyle(new XSSFCellStyle(st));
@@ -146,8 +146,8 @@ public class TestStylesTable extends TestCase {
assertEquals(1, st._getStyleXfsSize());
assertEquals(8, st._getNumberFormatSize());
- long nf1 = st.putNumberFormat("YYYY-mm-dd");
- long nf2 = st.putNumberFormat("YYYY-mm-DD");
+ int nf1 = st.putNumberFormat("YYYY-mm-dd");
+ int nf2 = st.putNumberFormat("YYYY-mm-DD");
assertEquals(nf1, st.putNumberFormat("YYYY-mm-dd"));
st = XSSFTestDataSamples.writeOutAndReadBack(workbook).getStylesSource();
diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java
index 87454dba47..7850d6ddca 100644
--- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java
+++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java
@@ -369,7 +369,7 @@ public final class TestXSSFCell extends TestCase {
Cell cell = sheet.createRow(0).createCell((short)0);
cell.setAsActiveCell();
- assertEquals("A1", sheet.getWorksheet().getSheetViews().getSheetViewArray(0).getSelectionArray(0).getActiveCell());
+ assertEquals("A1", sheet.getCTWorksheet().getSheetViews().getSheetViewArray(0).getSelectionArray(0).getActiveCell());
}
diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDialogSheet.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDialogSheet.java
index e57d8825e5..012b2bd67e 100644
--- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDialogSheet.java
+++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDialogSheet.java
@@ -22,7 +22,6 @@ import junit.framework.TestCase;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTDialogsheet;
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheet;
public class TestXSSFDialogSheet extends TestCase {
@@ -51,7 +50,7 @@ public class TestXSSFDialogSheet extends TestCase {
public void testGetSetAutoBreaks() {
XSSFWorkbook workbook = new XSSFWorkbook();
- XSSFDialogsheet sheet = (XSSFDialogsheet) workbook.createDialogsheet("Dialogsheet 1", null);
+ XSSFDialogsheet sheet = workbook.createDialogsheet("Dialogsheet 1", null);
assertTrue(sheet.getAutobreaks());
sheet.setAutobreaks(false);
assertFalse(sheet.getAutobreaks());
@@ -59,7 +58,7 @@ public class TestXSSFDialogSheet extends TestCase {
public void testIsSetFitToPage() {
XSSFWorkbook workbook = new XSSFWorkbook();
- XSSFDialogsheet sheet = (XSSFDialogsheet) workbook.createDialogsheet("Dialogsheet 1", null);
+ XSSFDialogsheet sheet = workbook.createDialogsheet("Dialogsheet 1", null);
assertFalse(sheet.getFitToPage());
sheet.setFitToPage(true);
assertTrue(sheet.getFitToPage());
@@ -69,7 +68,7 @@ public class TestXSSFDialogSheet extends TestCase {
public void testGetSetMargin() {
XSSFWorkbook workbook = new XSSFWorkbook();
- XSSFDialogsheet sheet = (XSSFDialogsheet) workbook.createDialogsheet("Dialogsheet 1", null);
+ XSSFDialogsheet sheet = workbook.createDialogsheet("Dialogsheet 1", null);
assertEquals((double) 0, sheet.getMargin((short) 0));
sheet.setMargin((short) 0, 10);
assertEquals((double) 10, sheet.getMargin((short) 0));
@@ -111,7 +110,7 @@ public class TestXSSFDialogSheet extends TestCase {
public void testGetFooter() {
XSSFWorkbook workbook = new XSSFWorkbook();
- XSSFDialogsheet sheet = (XSSFDialogsheet) workbook.createDialogsheet("Dialogsheet 1", null);
+ XSSFDialogsheet sheet = workbook.createDialogsheet("Dialogsheet 1", null);
assertNotNull(sheet.getFooter());
sheet.getFooter().setCenter("test center footer");
assertEquals("test center footer", sheet.getFooter().getCenter());
@@ -119,7 +118,7 @@ public class TestXSSFDialogSheet extends TestCase {
public void testGetAllHeadersFooters() {
XSSFWorkbook workbook = new XSSFWorkbook();
- XSSFDialogsheet sheet = (XSSFDialogsheet) workbook.createDialogsheet("Dialogsheet 1", null);
+ XSSFDialogsheet sheet = workbook.createDialogsheet("Dialogsheet 1", null);
assertNotNull(sheet);
assertNotNull(sheet.getOddFooter());
assertNotNull(sheet.getEvenFooter());
@@ -156,7 +155,7 @@ public class TestXSSFDialogSheet extends TestCase {
public void testGetSetHorizontallyCentered() {
XSSFWorkbook workbook = new XSSFWorkbook();
- XSSFDialogsheet sheet = (XSSFDialogsheet) workbook.createDialogsheet("Dialogsheet 1", null);
+ XSSFDialogsheet sheet = workbook.createDialogsheet("Dialogsheet 1", null);
assertFalse(sheet.getHorizontallyCenter());
sheet.setHorizontallyCenter(true);
assertTrue(sheet.getHorizontallyCenter());
@@ -166,7 +165,7 @@ public class TestXSSFDialogSheet extends TestCase {
public void testGetSetVerticallyCentered() {
XSSFWorkbook workbook = new XSSFWorkbook();
- XSSFDialogsheet sheet = (XSSFDialogsheet) workbook.createDialogsheet("Dialogsheet 1", null);
+ XSSFDialogsheet sheet = workbook.createDialogsheet("Dialogsheet 1", null);
assertFalse(sheet.getVerticallyCenter());
sheet.setVerticallyCenter(true);
assertTrue(sheet.getVerticallyCenter());
@@ -176,7 +175,7 @@ public class TestXSSFDialogSheet extends TestCase {
public void testIsSetPrintGridlines() {
XSSFWorkbook workbook = new XSSFWorkbook();
- XSSFDialogsheet sheet = (XSSFDialogsheet) workbook.createDialogsheet("Dialogsheet 1", null);
+ XSSFDialogsheet sheet = workbook.createDialogsheet("Dialogsheet 1", null);
assertFalse(sheet.isPrintGridlines());
sheet.setPrintGridlines(true);
assertTrue(sheet.isPrintGridlines());
@@ -184,7 +183,7 @@ public class TestXSSFDialogSheet extends TestCase {
public void testIsSetDisplayFormulas() {
XSSFWorkbook workbook = new XSSFWorkbook();
- XSSFDialogsheet sheet = (XSSFDialogsheet) workbook.createDialogsheet("Dialogsheet 1", null);
+ XSSFDialogsheet sheet = workbook.createDialogsheet("Dialogsheet 1", null);
assertFalse(sheet.isDisplayFormulas());
sheet.setDisplayFormulas(true);
assertTrue(sheet.isDisplayFormulas());
@@ -192,7 +191,7 @@ public class TestXSSFDialogSheet extends TestCase {
public void testIsSetDisplayGridLines() {
XSSFWorkbook workbook = new XSSFWorkbook();
- XSSFDialogsheet sheet = (XSSFDialogsheet) workbook.createDialogsheet("Dialogsheet 1", null);
+ XSSFDialogsheet sheet = workbook.createDialogsheet("Dialogsheet 1", null);
assertTrue(sheet.isDisplayGridlines());
sheet.setDisplayGridlines(false);
assertFalse(sheet.isDisplayGridlines());
@@ -200,7 +199,7 @@ public class TestXSSFDialogSheet extends TestCase {
public void testIsSetDisplayRowColHeadings() {
XSSFWorkbook workbook = new XSSFWorkbook();
- XSSFDialogsheet sheet = (XSSFDialogsheet) workbook.createDialogsheet("Dialogsheet 1", null);
+ XSSFDialogsheet sheet = workbook.createDialogsheet("Dialogsheet 1", null);
assertTrue(sheet.isDisplayRowColHeadings());
sheet.setDisplayRowColHeadings(false);
assertFalse(sheet.isDisplayRowColHeadings());
@@ -208,7 +207,7 @@ public class TestXSSFDialogSheet extends TestCase {
public void testGetScenarioProtect() {
XSSFWorkbook workbook = new XSSFWorkbook();
- XSSFDialogsheet sheet = (XSSFDialogsheet) workbook.createDialogsheet("Dialogsheet 1", null);
+ XSSFDialogsheet sheet = workbook.createDialogsheet("Dialogsheet 1", null);
assertFalse(sheet.getScenarioProtect());
}
diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDrawing.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDrawing.java
index 430924c856..34d49cf924 100755
--- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDrawing.java
+++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDrawing.java
@@ -42,8 +42,8 @@ public class TestXSSFDrawing extends TestCase {
String drawingId = drawing.getPackageRelationship().getId();
//there should be a relation to this drawing in the worksheet
- assertTrue(sheet.getWorksheet().isSetDrawing());
- assertEquals(drawingId, sheet.getWorksheet().getDrawing().getId());
+ assertTrue(sheet.getCTWorksheet().isSetDrawing());
+ assertEquals(drawingId, sheet.getCTWorksheet().getDrawing().getId());
}
@@ -63,8 +63,8 @@ public class TestXSSFDrawing extends TestCase {
String drawingId = drawing.getPackageRelationship().getId();
//there should be a relation to this drawing in the worksheet
- assertTrue(sheet.getWorksheet().isSetDrawing());
- assertEquals(drawingId, sheet.getWorksheet().getDrawing().getId());
+ assertTrue(sheet.getCTWorksheet().isSetDrawing());
+ assertEquals(drawingId, sheet.getCTWorksheet().getDrawing().getId());
}
public void testMultipleDrawings(){
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 1e1ce24a69..49088df2c2 100644
--- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java
+++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java
@@ -25,6 +25,7 @@ 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.ss.util.Region;
+import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.model.CommentsTable;
import org.apache.poi.xssf.model.StylesTable;
import org.apache.poi.xssf.usermodel.helpers.ColumnHelper;
@@ -404,7 +405,7 @@ public class TestXSSFSheet extends TestCase {
// Now check the low level stuff, and check that's all
// been set correctly
XSSFSheet xs = sheet;
- CTWorksheet cts = xs.getWorksheet();
+ CTWorksheet cts = xs.getCTWorksheet();
CTCols[] cols_s = cts.getColsArray();
assertEquals(1, cols_s.length);
@@ -621,7 +622,7 @@ public class TestXSSFSheet extends TestCase {
sheet.setCellComment("A1", comment);
assertEquals("A1", ctComments.getCommentList().getCommentArray(0).getRef());
comment.setAuthor("test A1 author");
- assertEquals("test A1 author", comments.getAuthor(ctComments.getCommentList().getCommentArray(0).getAuthorId()));
+ assertEquals("test A1 author", comments.getAuthor((int)ctComments.getCommentList().getCommentArray(0).getAuthorId()));
}
public void testGetActiveCell() {
@@ -636,7 +637,7 @@ public class TestXSSFSheet extends TestCase {
public void testCreateFreezePane() {
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet();
- CTWorksheet ctWorksheet = sheet.getWorksheet();
+ CTWorksheet ctWorksheet = sheet.getCTWorksheet();
sheet.createFreezePane(2, 4);
assertEquals((double)2, ctWorksheet.getSheetViews().getSheetViewArray(0).getPane().getXSplit());
@@ -653,17 +654,16 @@ public class TestXSSFSheet extends TestCase {
public void testNewMergedRegionAt() {
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet();
- Region region = new Region("B2:D4");
+ CellRangeAddress region = CellRangeAddress.valueOf("B2:D4");
sheet.addMergedRegion(region);
- assertEquals("B2:D4", sheet.getMergedRegionAt(0).getRegionRef());
+ assertEquals("B2:D4", sheet.getMergedRegion(0).formatAsString());
}
public void testGetNumMergedRegions() {
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet();
- CTWorksheet ctWorksheet = sheet.getWorksheet();
assertEquals(0, sheet.getNumMergedRegions());
- Region region = new Region("B2:D4");
+ CellRangeAddress region = CellRangeAddress.valueOf("B2:D4");
sheet.addMergedRegion(region);
assertEquals(1, sheet.getNumMergedRegions());
}
@@ -671,10 +671,10 @@ public class TestXSSFSheet extends TestCase {
public void testRemoveMergedRegion() {
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet();
- CTWorksheet ctWorksheet = sheet.getWorksheet();
- Region region_1 = new Region("A1:B2");
- Region region_2 = new Region("C3:D4");
- Region region_3 = new Region("E5:F6");
+ CTWorksheet ctWorksheet = sheet.getCTWorksheet();
+ CellRangeAddress region_1 = CellRangeAddress.valueOf("A1:B2");
+ CellRangeAddress region_2 = CellRangeAddress.valueOf("C3:D4");
+ CellRangeAddress region_3 = CellRangeAddress.valueOf("E5:F6");
sheet.addMergedRegion(region_1);
sheet.addMergedRegion(region_2);
sheet.addMergedRegion(region_3);
@@ -691,7 +691,7 @@ public class TestXSSFSheet extends TestCase {
public void testSetDefaultColumnStyle() {
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet();
- CTWorksheet ctWorksheet = sheet.getWorksheet();
+ CTWorksheet ctWorksheet = sheet.getCTWorksheet();
StylesTable stylesTable = workbook.getStylesSource();
XSSFFont font = new XSSFFont();
font.setFontName("Cambria");
@@ -750,7 +750,7 @@ public class TestXSSFSheet extends TestCase {
//one level
sheet.groupColumn((short)2,(short)7);
sheet.groupColumn((short)10,(short)11);
- CTCols cols=sheet.getWorksheet().getColsArray(0);
+ CTCols cols=sheet.getCTWorksheet().getColsArray(0);
assertEquals(2,cols.sizeOfColArray());
CTCol[]colArray=cols.getColArray();
assertNotNull(colArray);
@@ -760,7 +760,7 @@ public class TestXSSFSheet extends TestCase {
//two level
sheet.groupColumn((short)1,(short)2);
- cols=sheet.getWorksheet().getColsArray(0);
+ cols=sheet.getCTWorksheet().getColsArray(0);
assertEquals(4,cols.sizeOfColArray());
colArray=cols.getColArray();
assertEquals(2, colArray[1].getOutlineLevel());
@@ -768,7 +768,7 @@ public class TestXSSFSheet extends TestCase {
//three level
sheet.groupColumn((short)6,(short)8);
sheet.groupColumn((short)2,(short)3);
- cols=sheet.getWorksheet().getColsArray(0);
+ cols=sheet.getCTWorksheet().getColsArray(0);
assertEquals(7,cols.sizeOfColArray());
colArray=cols.getColArray();
assertEquals(3, colArray[1].getOutlineLevel());
@@ -792,7 +792,7 @@ public class TestXSSFSheet extends TestCase {
//one level
sheet.groupRow(9,10);
- assertEquals(2,sheet.rows.size());
+ assertEquals(2,sheet.getPhysicalNumberOfRows());
CTRow ctrow = sheet.getRow(8).getCTRow();
assertNotNull(ctrow);
@@ -802,7 +802,7 @@ public class TestXSSFSheet extends TestCase {
//two level
sheet.groupRow(10,13);
- assertEquals(5,sheet.rows.size());
+ assertEquals(5,sheet.getPhysicalNumberOfRows());
ctrow = sheet.getRow(9).getCTRow();
assertNotNull(ctrow);
assertEquals(10,ctrow.getR());
@@ -811,11 +811,11 @@ public class TestXSSFSheet extends TestCase {
sheet.ungroupRow(8, 10);
- assertEquals(4,sheet.rows.size());
+ assertEquals(4,sheet.getPhysicalNumberOfRows());
assertEquals(1,sheet.getSheetTypeSheetFormatPr().getOutlineLevelRow());
sheet.ungroupRow(10,10);
- assertEquals(3,sheet.rows.size());
+ assertEquals(3,sheet.getPhysicalNumberOfRows());
assertEquals(1,sheet.getSheetTypeSheetFormatPr().getOutlineLevelRow());
}
diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
index beaafb3e85..5d3c6ab35b 100644
--- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
+++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
@@ -54,6 +54,8 @@ public final class TestXSSFWorkbook extends TestCase {
public void testGetSetActiveSheet(){
XSSFWorkbook workbook = new XSSFWorkbook();
+ assertEquals(0, workbook.getActiveSheetIndex());
+
workbook.createSheet("sheet1");
workbook.createSheet("sheet2");
workbook.createSheet("sheet3");
@@ -84,7 +86,7 @@ public final class TestXSSFWorkbook extends TestCase {
assertSame(sheet2, workbook.getSheetAt(0));
assertSame(sheet1, workbook.getSheetAt(1));
// Test reordering of CTSheets
- CTWorkbook ctwb = workbook.getWorkbook();
+ CTWorkbook ctwb = workbook.getCTWorkbook();
CTSheet[] ctsheets = ctwb.getSheets().getSheetArray();
assertEquals("sheet2", ctsheets[0].getName());
assertEquals("sheet1", ctsheets[1].getName());
@@ -334,19 +336,19 @@ public final class TestXSSFWorkbook extends TestCase {
assertNotNull(cellStyleAt);
//get custom style
- StylesSource styleSource = workbook.getStylesSource();
+ StylesTable styleSource = workbook.getStylesSource();
CellStyle customStyle = new XSSFCellStyle(styleSource);
Font font = new XSSFFont();
font.setFontName("Verdana");
customStyle.setFont(font);
- Long x = styleSource.putStyle(customStyle);
- cellStyleAt = workbook.getCellStyleAt(x.shortValue());
+ int x = styleSource.putStyle(customStyle);
+ cellStyleAt = workbook.getCellStyleAt((short)x);
assertNotNull(cellStyleAt);
}
public void testGetFontAt(){
XSSFWorkbook workbook = new XSSFWorkbook();
- StylesSource styleSource = workbook.getStylesSource();
+ StylesTable styleSource = workbook.getStylesSource();
short i = 0;
//get default font
Font fontAt = workbook.getFontAt(i);
@@ -355,8 +357,8 @@ public final class TestXSSFWorkbook extends TestCase {
//get customized font
Font customFont = new XSSFFont();
customFont.setItalic(true);
- Long x = styleSource.putFont(customFont);
- fontAt = workbook.getFontAt(x.shortValue());
+ int x = styleSource.putFont(customFont);
+ fontAt = workbook.getFontAt((short)x);
assertNotNull(fontAt);
}
@@ -432,7 +434,7 @@ public final class TestXSSFWorkbook extends TestCase {
public void testStyles() {
XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("Formatting.xlsx");
- StylesSource ss = workbook.getStylesSource();
+ StylesTable ss = workbook.getStylesSource();
assertNotNull(ss);
assertTrue(ss instanceof StylesTable);
StylesTable st = (StylesTable)ss;
diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/helpers/TestColumnHelper.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/helpers/TestColumnHelper.java
index 9e4fb761d0..089f258219 100644
--- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/helpers/TestColumnHelper.java
+++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/helpers/TestColumnHelper.java
@@ -25,7 +25,6 @@ import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCol;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCols;
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheet;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTXf;
@@ -64,7 +63,7 @@ public final class TestColumnHelper extends TestCase {
// Remember - POI column 0 == OOXML column 1
assertEquals((double) 88, helper.getColumn(0, false).getWidth());
assertTrue(helper.getColumn(0, false).getHidden());
- assertEquals((double) 00, helper.getColumn(1, false).getWidth());
+ assertEquals((double)0, helper.getColumn(1, false).getWidth());
assertFalse(helper.getColumn(1, false).getHidden());
}
@@ -260,7 +259,7 @@ public final class TestColumnHelper extends TestCase {
public void testGetSetColDefaultStyle() {
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet();
- CTWorksheet ctWorksheet = sheet.getWorksheet();
+ CTWorksheet ctWorksheet = sheet.getCTWorksheet();
ColumnHelper columnHelper = sheet.getColumnHelper();
// POI column 3, OOXML column 4
@@ -271,7 +270,7 @@ public final class TestColumnHelper extends TestCase {
columnHelper.setColDefaultStyle(3, 2);
assertEquals(2, columnHelper.getColDefaultStyle(3));
assertEquals(-1, columnHelper.getColDefaultStyle(4));
- StylesTable stylesTable = (StylesTable) workbook.getStylesSource();
+ StylesTable stylesTable = workbook.getStylesSource();
CTXf cellXf = CTXf.Factory.newInstance();
cellXf.setFontId(0);
cellXf.setFillId(0);