1. moved ooxml enums into interfaces-jdk15, they are common and should be in the place as the interfaces 2. removed obsolete and deprecated classes 3. Fixed XSSFWorkbook.cloneSheet. Now it makes a 'true' deep copy of a sheet 4. ooxml has a compile-time dependency on scratchpad, fixed build.xml to reflect that

git-svn-id: https://svn.apache.org/repos/asf/poi/branches/ooxml@708497 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Yegor Kozlov 2008-10-28 10:03:51 +00:00
parent 8a6625a237
commit 9148feb877
57 changed files with 199 additions and 911 deletions

View File

@ -519,7 +519,7 @@ under the License.
</javac>
</target>
<target name="compile-ooxml" depends="init, check-ooxml-xsds, fetch-ooxml-xsds, compile-ooxml-xsds, compile-main">
<target name="compile-ooxml" depends="init, check-ooxml-xsds, fetch-ooxml-xsds, compile-ooxml-xsds, compile-main, compile-scratchpad">
<!-- openxml4j requires java 1.5, so so must we, for now -->
<javac target="1.5" source="1.5"
destdir="${ooxml.output.dir}" debug="on" srcdir="${ooxml.src}">

View File

@ -18,12 +18,8 @@ package org.apache.poi.xssf.usermodel.examples;
import java.io.FileOutputStream;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.xssf.usermodel.XSSFRichTextString;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

View File

@ -18,15 +18,9 @@ package org.apache.poi.xssf.usermodel.examples;
import java.io.FileOutputStream;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.Hyperlink;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.IndexedColors;
/**
* Demonstrates how to create hyperlinks.

View File

@ -17,7 +17,7 @@
package org.apache.poi.xssf.usermodel.examples;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.*;
import java.io.FileOutputStream;

View File

@ -16,13 +16,9 @@
==================================================================== */
package org.apache.poi.xssf.usermodel.examples;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFRichTextString;
import org.apache.poi.xssf.usermodel.IndexedColors;
import org.apache.poi.xssf.usermodel.extensions.XSSFColor;
import org.apache.poi.ss.usermodel.IndexedColors;
import java.io.FileOutputStream;

View File

@ -18,13 +18,8 @@ package org.apache.poi.xssf.usermodel.examples;
import org.apache.poi.xssf.usermodel.*;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.xmlbeans.XmlOptions;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.*;
import java.io.FileOutputStream;
import java.io.Writer;
import java.io.StringWriter;
/**
* Demonstrates how to work with rich text

View File

@ -19,7 +19,6 @@ package org.apache.poi.hssf.usermodel;
import org.apache.poi.hssf.record.PaletteRecord;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.Palette;
/**
* Represents a workbook color palette.
@ -29,7 +28,7 @@ import org.apache.poi.ss.usermodel.Palette;
*
* @author Brian Sanders (bsanders at risklabs dot com)
*/
public class HSSFPalette implements Palette
public class HSSFPalette
{
private PaletteRecord palette;

View File

@ -25,7 +25,6 @@ import org.apache.poi.ddf.EscherComplexProperty;
import org.apache.poi.ddf.EscherOptRecord;
import org.apache.poi.ddf.EscherProperty;
import org.apache.poi.hssf.record.EscherAggregate;
import org.apache.poi.ss.usermodel.Patriarch;
import org.apache.poi.util.StringUtil;
/**
@ -35,7 +34,7 @@ import org.apache.poi.util.StringUtil;
* @author Glen Stampoultzis (glens at apache.org)
*/
public class HSSFPatriarch
implements HSSFShapeContainer, Patriarch
implements HSSFShapeContainer
{
List shapes = new ArrayList();
HSSFSheet sheet;

View File

@ -15,7 +15,7 @@
limitations under the License.
==================================================================== */
package org.apache.poi.xssf.usermodel;
package org.apache.poi.ss.usermodel;
/**
* The enumeration value indicating the line style of a border in a cell,

View File

@ -227,7 +227,7 @@ public interface CellStyle {
public final static short LEAST_DOTS = 18;
/**
* get the index within the HSSFWorkbook (sequence within the collection of ExtnededFormat objects)
* get the index within the Workbook (sequence within the collection of ExtnededFormat objects)
* @return unique index number of the underlying record this style represents (probably you don't care
* unless you're comparing which one is which)
*/
@ -236,14 +236,14 @@ public interface CellStyle {
/**
* set the data format (must be a valid format)
* @see org.apache.poi.hssf.usermodel.HSSFDataFormat
* @see DataFormat
*/
void setDataFormat(short fmt);
/**
* get the index of the format
* @see org.apache.poi.hssf.usermodel.HSSFDataFormat
* @see DataFormat
*/
short getDataFormat();
@ -252,27 +252,18 @@ public interface CellStyle {
*/
public String getDataFormatString();
/**
* Get the contents of the format string, by looking up
* the DataFormat against the supplied workbook
* @see org.apache.poi.hssf.usermodel.HSSFDataFormat
* XXX Commented out because it uses internal implementation Workbook class.
*
String getDataFormatString(Workbook workbook);
*/
/**
* set the font for this style
* @param font a font object created or retreived from the HSSFWorkbook object
* @see org.apache.poi.hssf.usermodel.HSSFWorkbook#createFont()
* @see org.apache.poi.hssf.usermodel.HSSFWorkbook#getFontAt(short)
* @param font a font object created or retreived from the Workbook object
* @see Workbook#createFont()
* @see Workbook#getFontAt(short)
*/
void setFont(Font font);
/**
* gets the index of the font for this style
* @see org.apache.poi.hssf.usermodel.HSSFWorkbook#getFontAt(short)
* @see Workbook#getFontAt(short)
*/
short getFontIndex();
@ -571,8 +562,6 @@ public interface CellStyle {
/**
* get the color to use for the left border
* @see org.apache.poi.hssf.usermodel.HSSFPalette#getColor(short)
* @param color The index of the color definition
*/
short getLeftBorderColor();
@ -584,8 +573,7 @@ public interface CellStyle {
/**
* get the color to use for the left border
* @see org.apache.poi.hssf.usermodel.HSSFPalette#getColor(short)
* @param color The index of the color definition
* @return the index of the color definition
*/
short getRightBorderColor();
@ -597,8 +585,7 @@ public interface CellStyle {
/**
* get the color to use for the top border
* @see org.apache.poi.hssf.usermodel.HSSFPalette#getColor(short)
* @param color The index of the color definition
* @return hhe index of the color definition
*/
short getTopBorderColor();
@ -610,8 +597,7 @@ public interface CellStyle {
/**
* get the color to use for the left border
* @see org.apache.poi.hssf.usermodel.HSSFPalette#getColor(short)
* @param color The index of the color definition
* @return the index of the color definition
*/
short getBottomBorderColor();
@ -650,26 +636,6 @@ public interface CellStyle {
/**
* set the background fill color.
* <p>
* For example:
* <pre>
* cs.setFillPattern(HSSFCellStyle.FINE_DOTS );
* cs.setFillBackgroundColor(new HSSFColor.RED().getIndex());
* </pre>
* optionally a Foreground and background fill can be applied:
* <i>Note: Ensure Foreground color is set prior to background</i>
* <pre>
* cs.setFillPattern(HSSFCellStyle.FINE_DOTS );
* cs.setFillForegroundColor(new HSSFColor.BLUE().getIndex());
* cs.setFillBackgroundColor(new HSSFColor.RED().getIndex());
* </pre>
* or, for the special case of SOLID_FILL:
* <pre>
* cs.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND );
* cs.setFillForegroundColor(new HSSFColor.RED().getIndex());
* </pre>
* It is necessary to set the fill style in order
* for the color to be shown in the cell.
*
* @param bg color
*/
@ -678,7 +644,6 @@ public interface CellStyle {
/**
* get the background fill color
* @see org.apache.poi.hssf.usermodel.HSSFPalette#getColor(short)
* @return fill color
*/
short getFillBackgroundColor();
@ -692,7 +657,6 @@ public interface CellStyle {
/**
* get the foreground fill color
* @see org.apache.poi.hssf.usermodel.HSSFPalette#getColor(short)
* @return fill color
*/
short getFillForegroundColor();

View File

@ -1,36 +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.ss.usermodel;
/**
* Allows the getting and saving of cell comments,
* associated with a given sheet.
*/
public interface CommentsSource {
public String getAuthor(long authorId);
public int getNumberOfComments();
public int findAuthor(String author);
public Comment findCellComment(int row, int column);
public Comment findCellComment(String cellRef);
public Comment addComment();
}

View File

@ -15,7 +15,7 @@
limitations under the License.
==================================================================== */
package org.apache.poi.xssf.usermodel;
package org.apache.poi.ss.usermodel;
/**
* The enumeration value indicating the style of fill pattern being used for a cell format.

View File

@ -15,7 +15,7 @@
limitations under the License.
==================================================================== */
package org.apache.poi.xssf.usermodel;
package org.apache.poi.ss.usermodel;
/**

View File

@ -15,7 +15,7 @@
limitations under the License.
==================================================================== */
package org.apache.poi.xssf.usermodel;
package org.apache.poi.ss.usermodel;
/**

View File

@ -15,7 +15,7 @@
limitations under the License.
==================================================================== */
package org.apache.poi.xssf.usermodel;
package org.apache.poi.ss.usermodel;
/**

View File

@ -15,7 +15,7 @@
limitations under the License.
==================================================================== */
package org.apache.poi.xssf.usermodel;
package org.apache.poi.ss.usermodel;
/**
* The enumeration value indicating horizontal alignment of a cell,

View File

@ -15,7 +15,7 @@
limitations under the License.
==================================================================== */
package org.apache.poi.xssf.usermodel;
package org.apache.poi.ss.usermodel;
/**
* A deprecated indexing scheme for colours that is still required for some records, and for backwards

View File

@ -15,7 +15,7 @@
limitations under the License.
==================================================================== */
package org.apache.poi.xssf.usermodel;
package org.apache.poi.ss.usermodel;
/**
* Specifies printed page order.

View File

@ -1,75 +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.ss.usermodel;
public interface Palette {
/**
* Retrieves the color at a given index
*
* @param index the palette index, between 0x8 to 0x40 inclusive
* @return the color, or null if the index is not populated
*/
Color getColor(short index);
/**
* Finds the first occurance of a given color
*
* @param red the RGB red component, between 0 and 255 inclusive
* @param green the RGB green component, between 0 and 255 inclusive
* @param blue the RGB blue component, between 0 and 255 inclusive
* @return the color, or null if the color does not exist in this palette
*/
Color findColor(byte red, byte green, byte blue);
/**
* Finds the closest matching color in the custom palette. The
* method for finding the distance between the colors is fairly
* primative.
*
* @param red The red component of the color to match.
* @param green The green component of the color to match.
* @param blue The blue component of the color to match.
* @return The closest color or null if there are no custom
* colors currently defined.
*/
Color findSimilarColor(byte red, byte green, byte blue);
/**
* Sets the color at the given offset
*
* @param index the palette index, between 0x8 to 0x40 inclusive
* @param red the RGB red component, between 0 and 255 inclusive
* @param green the RGB green component, between 0 and 255 inclusive
* @param blue the RGB blue component, between 0 and 255 inclusive
*/
void setColorAtIndex(short index, byte red, byte green, byte blue);
/**
* Adds a new color into an empty color slot.
* @param red The red component
* @param green The green component
* @param blue The blue component
*
* @return The new custom color.
*
* @throws RuntimeException if there are more more free color indexes.
*/
Color addColor(byte red, byte green, byte blue);
}

View File

@ -15,7 +15,7 @@
limitations under the License.
==================================================================== */
package org.apache.poi.xssf.usermodel;
package org.apache.poi.ss.usermodel;
/**
* The enumeration value indicating the possible paper size for a sheet

View File

@ -1,124 +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.ss.usermodel;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFAnchor;
import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
import org.apache.poi.hssf.usermodel.HSSFComment;
import org.apache.poi.hssf.usermodel.HSSFPicture;
import org.apache.poi.hssf.usermodel.HSSFPolygon;
import org.apache.poi.hssf.usermodel.HSSFShapeGroup;
import org.apache.poi.hssf.usermodel.HSSFSimpleShape;
import org.apache.poi.hssf.usermodel.HSSFTextbox;
public interface Patriarch {
/**
* Creates a new group record stored under this patriarch.
*
* @param anchor the client anchor describes how this group is attached
* to the sheet.
* @return the newly created group.
*/
HSSFShapeGroup createGroup(HSSFClientAnchor anchor);
/**
* Creates a simple shape. This includes such shapes as lines, rectangles,
* and ovals.
*
* @param anchor the client anchor describes how this group is attached
* to the sheet.
* @return the newly created shape.
*/
HSSFSimpleShape createSimpleShape(HSSFClientAnchor anchor);
/**
* Creates a picture.
*
* @param anchor the client anchor describes how this group is attached
* to the sheet.
* @return the newly created shape.
*/
HSSFPicture createPicture(HSSFClientAnchor anchor, int pictureIndex);
/**
* Creates a polygon
*
* @param anchor the client anchor describes how this group is attached
* to the sheet.
* @return the newly created shape.
*/
HSSFPolygon createPolygon(HSSFClientAnchor anchor);
/**
* Constructs a textbox under the patriarch.
*
* @param anchor the client anchor describes how this group is attached
* to the sheet.
* @return the newly created textbox.
*/
HSSFTextbox createTextbox(HSSFClientAnchor anchor);
/**
* Constructs a cell comment.
*
* @param anchor the client anchor describes how this comment is attached
* to the sheet.
* @return the newly created comment.
*/
HSSFComment createComment(HSSFAnchor anchor);
/**
* Returns a list of all shapes contained by the patriarch.
*/
List getChildren();
/**
* Total count of all children and their children's children.
*/
int countOfAllChildren();
/**
* Sets the coordinate space of this group. All children are contrained
* to these coordinates.
*/
void setCoordinates(int x1, int y1, int x2, int y2);
/**
* The top left x coordinate of this group.
*/
int getX1();
/**
* The top left y coordinate of this group.
*/
int getY1();
/**
* The bottom right x coordinate of this group.
*/
int getX2();
/**
* The bottom right y coordinate of this group.
*/
int getY2();
}

View File

@ -15,7 +15,7 @@
limitations under the License.
==================================================================== */
package org.apache.poi.xssf.usermodel;
package org.apache.poi.ss.usermodel;
/**
* These enumerations specify how cell comments shall be displayed for paper printing purposes.

View File

@ -15,7 +15,7 @@
limitations under the License.
==================================================================== */
package org.apache.poi.xssf.usermodel;
package org.apache.poi.ss.usermodel;
/**
* The enumeration value indicating the print orientation for a sheet.

View File

@ -21,10 +21,6 @@ import java.lang.Iterable;
import java.util.Iterator;
public interface Row extends Iterable<Cell> {
// used for collections
public final static int INITIAL_CAPACITY = 5;
/**
* Use this to create new cells within the row and return it.
* <p>

View File

@ -14,7 +14,7 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
package org.apache.poi.xssf.usermodel;
package org.apache.poi.ss.usermodel;
/**
* All known types of automatic shapes in DrawingML

View File

@ -45,20 +45,12 @@ public interface Sheet extends Iterable<Row> {
public static final byte PANE_UPPER_LEFT = (byte) 3;
/**
* Used for compile-time optimization. This is the initial size for the collection of
* rows. It is currently set to 20. If you generate larger sheets you may benefit
* by setting this to a higher number and recompiling a custom edition of HSSFSheet.
*/
public final static int INITIAL_CAPACITY = 20;
/**
* Create a new row within the sheet and return the high level representation
*
* @param rownum row number
* @return High level HSSFRow object representing a row in the sheet
* @see org.apache.poi.hssf.usermodel.HSSFRow
* @return High level Row object representing a row in the sheet
* @see Row
* @see #removeRow(Row)
*/
Row createRow(int rownum);
@ -75,7 +67,7 @@ public interface Sheet extends Iterable<Row> {
* Returns the logical row (not physical) 0-based. If you ask for a row that is not
* defined you get a null. This is to say row 4 represents the fifth row on a sheet.
* @param rownum row to get
* @return HSSFRow representing the rownumber or null if its not defined on the sheet
* @return Row representing the rownumber or null if its not defined on the sheet
*/
Row getRow(int rownum);

View File

@ -1,30 +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.ss.usermodel;
public interface StylesSource {
public String getNumberFormatAt(long idx);
public long putNumberFormat(String fmt);
public Font getFontAt(long idx);
public long putFont(Font font);
public CellStyle getStyleAt(long idx);
public long putStyle(CellStyle style);
}

View File

@ -15,7 +15,7 @@
limitations under the License.
==================================================================== */
package org.apache.poi.xssf.usermodel;
package org.apache.poi.ss.usermodel;
/**
* This enumeration value indicates the type of vertical alignment for a cell, i.e.,

View File

@ -25,15 +25,6 @@ import org.apache.poi.ss.usermodel.Row.MissingCellPolicy;
public interface Workbook {
/**
* used for compile-time performance/memory optimization. This determines the
* initial capacity for the sheet collection. Its currently set to 3.
* Changing it in this release will decrease performance
* since you're never allowed to have more or less than three sheets!
*/
public final static int INITIAL_CAPACITY = 3;
/** Extended windows meta file */
public static final int PICTURE_TYPE_EMF = 2;
@ -72,20 +63,11 @@ public interface Workbook {
* This may be different from the "selected sheet" since excel seems to
* allow you to show the data of one sheet when another is seen "selected"
* in the tabs (at the bottom).
* @see org.apache.poi.hssf.usermodel.HSSFSheet#setSelected(boolean)
* @see Sheet#setSelected(boolean)
* @param index
*/
void setSelectedTab(short index);
/**
* gets the tab whose data is actually seen when the sheet is opened.
* This may be different from the "selected sheet" since excel seems to
* allow you to show the data of one sheet when another is seen "selected"
* in the tabs (at the bottom).
* @see org.apache.poi.hssf.usermodel.HSSFSheet#setSelected(boolean)
*/
short getSelectedTab();
/**
* set the sheet name.
* Will throw IllegalArgumentException if the name is greater than 31 chars
@ -115,28 +97,28 @@ public interface Workbook {
int getSheetIndex(Sheet sheet);
/**
* create an HSSFSheet for this HSSFWorkbook, adds it to the sheets and returns
* create an Sheet for this Workbook, adds it to the sheets and returns
* the high level representation. Use this to create new sheets.
*
* @return HSSFSheet representing the new sheet.
* @return Sheet representing the new sheet.
*/
Sheet createSheet();
/**
* create an HSSFSheet from an existing sheet in the HSSFWorkbook.
* create an Sheet from an existing sheet in the Workbook.
*
* @return HSSFSheet representing the cloned sheet.
* @return Sheet representing the cloned sheet.
*/
Sheet cloneSheet(int sheetNum);
/**
* create an HSSFSheet for this HSSFWorkbook, adds it to the sheets and returns
* create an Sheet 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.
* @return HSSFSheet representing the new sheet.
* @return Sheet representing the new sheet.
*/
Sheet createSheet(String sheetname);
@ -149,9 +131,9 @@ public interface Workbook {
int getNumberOfSheets();
/**
* Get the HSSFSheet object at the given index.
* Get the Sheet object at the given index.
* @param index of the sheet number (0-based physical & logical)
* @return HSSFSheet at the provided index
* @return Sheet at the provided index
*/
Sheet getSheetAt(int index);
@ -159,7 +141,7 @@ public interface Workbook {
/**
* Get sheet with the given name
* @param name of the sheet
* @return HSSFSheet with the name provided or null if it does not exist
* @return Sheet with the name provided or null if it does not exist
*/
Sheet getSheet(String name);
@ -220,7 +202,7 @@ public interface Workbook {
/**
* get the font at the given index number
* @param idx index number
* @return HSSFFont at the index
* @return XSSFFont at the index
*/
Font getFontAt(short idx);
@ -242,7 +224,7 @@ public interface Workbook {
/**
* get the cell style object at the given index
* @param idx index within the set of styles
* @return HSSFCellStyle object at the index
* @return CellStyle object at the index
*/
CellStyle getCellStyleAt(short idx);
@ -271,12 +253,6 @@ public interface Workbook {
*/
Name getNameAt(int index);
/** gets the named range name
* @param index the named range index (0 based)
* @return named range name
*/
String getNameName(int index);
/**
* Sets the printarea for the sheet provided
* <p>
@ -346,10 +322,8 @@ public interface Workbook {
void removeName(int index);
/**
* Returns the instance of HSSFDataFormat for this workbook.
* @return the HSSFDataFormat object
* @see org.apache.poi.hssf.record.FormatRecord
* @see org.apache.poi.hssf.record.Record
* Returns the instance of DataFormat for this workbook.
* @return the DataFormat object
*/
DataFormat createDataFormat();

View File

@ -1,67 +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.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
/**
* An implementation of XSSFModel for binary parts of
* the file, eg images or vba macros
*/
public class BinaryPart implements XSSFModel {
private byte[] data;
public BinaryPart(InputStream in) throws IOException {
readFrom(in);
}
/**
* Fetch the contents of the binary part
*/
public byte[] getContents() {
return data;
}
/**
* Changes the contents of the binary part
*/
public void setContents(byte[] data) {
this.data = data;
}
/**
* Reads the contents of the binary part in.
*/
public void readFrom(InputStream is) throws IOException {
int read = 0;
byte[] buffer = new byte[4096];
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while( (read = is.read(buffer)) != -1 ) {
if(read > 0) {
baos.write(buffer, 0, read);
}
}
data = baos.toByteArray();
}
public void writeTo(OutputStream out) throws IOException {
out.write(data);
}
}

View File

@ -20,12 +20,10 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.poi.ss.usermodel.CommentsSource;
import org.apache.poi.ss.util.CellReference;
import org.apache.poi.xssf.usermodel.XSSFComment;
import org.apache.poi.POIXMLDocumentPart;
import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlOptions;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTAuthors;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTComment;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCommentList;

View File

@ -1,99 +0,0 @@
package org.apache.poi.xssf.model;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import org.apache.poi.xssf.usermodel.XSSFActiveXData;
import org.apache.poi.xssf.usermodel.XSSFRelation;
import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlOptions;
import org.openxml4j.opc.PackagePart;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTControl;
/**
* A control object in XSSF, which will typically
* have active x data associated with it.
*/
public class Control implements XSSFChildContainingModel {
private CTControl control;
private String originalId;
private ArrayList<XSSFActiveXData> activexBins;
public Control(InputStream is, String originalId) throws IOException {
readFrom(is);
this.originalId = originalId;
this.activexBins = new ArrayList<XSSFActiveXData>();
}
public String getOriginalId() {
return this.originalId;
}
public Control() {
this.control = CTControl.Factory.newInstance();
}
/**
* For unit testing only!
*/
protected Control(CTControl control) {
this.control = control;
}
public void readFrom(InputStream is) throws IOException {
try {
CTControl doc = CTControl.Factory.parse(is);
control = doc;
} catch (XmlException e) {
throw new IOException(e.getLocalizedMessage());
}
}
public void writeTo(OutputStream out) throws IOException {
XmlOptions options = new XmlOptions();
options.setSaveOuter();
options.setUseDefaultNamespace();
// Requests use of whitespace for easier reading
options.setSavePrettyPrint();
control.save(out, options);
}
/**
* We expect active x binary parts
*/
public String[] getChildrenRelationshipTypes() {
return new String[] {
XSSFRelation.ACTIVEX_BINS.getRelation()
};
}
public int getNumberOfChildren() {
return activexBins.size();
}
/**
* Generates and adds XSSFActiveXData children
*/
public void generateChild(PackagePart childPart, String childRelId) {
XSSFActiveXData actX = new XSSFActiveXData(childPart, childRelId);
activexBins.add(actX);
}
public WritableChild getChildForWriting(int index) {
if(index >= activexBins.size()) {
throw new IllegalArgumentException("Can't get child at " + index + " when size is " + getNumberOfChildren());
}
return new WritableChild(
activexBins.get(index),
XSSFRelation.ACTIVEX_BINS
);
}
public ArrayList<XSSFActiveXData> getData() {
return this.activexBins;
}
public void addData(XSSFActiveXData activeX) {
this.activexBins.add(activeX);
}
}

View File

@ -1,94 +0,0 @@
package org.apache.poi.xssf.model;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import org.apache.poi.xssf.usermodel.XSSFPictureData;
import org.apache.poi.xssf.usermodel.XSSFRelation;
import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlOptions;
import org.openxml4j.opc.PackagePart;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTDrawing;
/**
* A drawing object in XSSF. May well have raw pictures
* attached to it as children.
*/
public class Drawing implements XSSFModel {
private CTDrawing drawing;
private String originalId;
/** Raw pictures attached to the drawing */
private ArrayList<XSSFPictureData> pictures;
public Drawing(InputStream is, String originalId) throws IOException {
readFrom(is);
this.originalId = originalId;
this.pictures = new ArrayList<XSSFPictureData>();
}
public String getOriginalId() {
return this.originalId;
}
public Drawing() {
this.drawing = CTDrawing.Factory.newInstance();
}
/**
* For unit testing only!
*/
protected Drawing(CTDrawing drawing) {
this.drawing = drawing;
}
public void readFrom(InputStream is) throws IOException {
try {
CTDrawing doc = CTDrawing.Factory.parse(is);
drawing = doc;
} catch (XmlException e) {
throw new IOException(e.getLocalizedMessage());
}
}
public void writeTo(OutputStream out) throws IOException {
XmlOptions options = new XmlOptions();
options.setSaveOuter();
options.setUseDefaultNamespace();
// Requests use of whitespace for easier reading
//options.setSavePrettyPrint();
drawing.save(out, options);
}
/**
* We expect image parts
*/
public String[] getChildrenRelationshipTypes() {
return new String[] {
XSSFRelation.IMAGES.getRelation()
};
}
public int getNumberOfChildren() {
return pictures.size();
}
/**
* Generates and adds XSSFActiveXData children
*/
public void generateChild(PackagePart childPart, String childRelId) {
//XSSFPictureData pd = new XSSFPictureData(childPart, childRelId);
//pictures.add(pd);
throw new RuntimeException("deprecated");
}
public ArrayList<XSSFPictureData> getPictures()
{
return this.pictures;
}
public void addPictures(XSSFPictureData picture)
{
this.pictures.add(picture);
}
}

View File

@ -1,28 +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 org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRst;
/**
* Allows the getting and saving of shared strings
*/
public interface SharedStringSource {
CTRst getEntryAt(int ref);
int addEntry(CTRst rst);
}

View File

@ -23,15 +23,13 @@ import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.LinkedList;
import java.util.List;
import java.util.Map.Entry;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.StylesSource;
import org.apache.poi.xssf.usermodel.FontFamily;
import org.apache.poi.xssf.usermodel.FontScheme;
import org.apache.poi.ss.usermodel.FontFamily;
import org.apache.poi.ss.usermodel.FontScheme;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.extensions.XSSFCellBorder;

View File

@ -1,67 +0,0 @@
package org.apache.poi.xssf.model;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
/* ====================================================================
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.
==================================================================== */
import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlOptions;
import org.openxmlformats.schemas.drawingml.x2006.main.*;
/**
* An instance of this part type contains information about a document's theme, which is a combination of color
* scheme, font scheme, and format scheme (the latter also being referred to as effects).
* For a SpreadsheetML document, the choice of theme affects the color and style of cell contents and charts,
* among other things.
*
* @author Yegor Kozlov
*/
public class ThemeTable implements XSSFModel {
private ThemeDocument doc;
private String originalId;
public ThemeTable(InputStream is, String originalId) throws IOException {
readFrom(is);
this.originalId = originalId;
}
public String getOriginalId() {
return this.originalId;
}
public ThemeTable() {
this.doc = ThemeDocument.Factory.newInstance();
}
public void readFrom(InputStream is) throws IOException {
try {
doc = ThemeDocument.Factory.parse(is);
} catch (XmlException e) {
throw new IOException(e.getLocalizedMessage());
}
}
public void writeTo(OutputStream out) throws IOException {
XmlOptions options = new XmlOptions();
options.setSaveOuter();
options.setUseDefaultNamespace();
doc.save(out, options);
}
}

View File

@ -17,9 +17,7 @@
package org.apache.poi.xssf.usermodel;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.StylesSource;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.model.StylesTable;
import org.apache.poi.xssf.usermodel.extensions.XSSFCellAlignment;
import org.apache.poi.xssf.usermodel.extensions.XSSFCellBorder;
@ -310,7 +308,7 @@ public class XSSFCellStyle implements CellStyle, Cloneable {
* Get the color to use for the bottom border
* <br/>
* Color is optional. When missing, IndexedColors.AUTOMATIC is implied.
* @return the index of the color definition, default value is {@link IndexedColors.AUTOMATIC}
* @return the index of the color definition, default value is {@link org.apache.poi.ss.usermodel.IndexedColors.AUTOMATIC}
* @see IndexedColors
*/
public short getBottomBorderColor() {
@ -664,7 +662,7 @@ public class XSSFCellStyle implements CellStyle, Cloneable {
* Set the type of horizontal alignment for the cell
*
* @param align - the type of alignment
* @see HorizontalAlignment
* @see org.apache.poi.ss.usermodel.HorizontalAlignment
*/
public void setAlignment(HorizontalAlignment align) {
setAlignment((short)align.ordinal());
@ -1192,7 +1190,7 @@ public class XSSFCellStyle implements CellStyle, Cloneable {
* Set the color to use for the top border
*
* @param color the index of the color definition
* @see IndexedColors
* @see org.apache.poi.ss.usermodel.IndexedColors
*/
public void setTopBorderColor(short color) {
XSSFColor clr = new XSSFColor();

View File

@ -17,7 +17,6 @@
package org.apache.poi.xssf.usermodel;
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;

View File

@ -95,10 +95,10 @@ public class XSSFConnector extends XSSFShape {
}
/**
* Gets the shape type, one of the constants defined in {@link org.apache.poi.xssf.usermodel.ShapeTypes}.
* Gets the shape type, one of the constants defined in {@link org.apache.poi.ss.usermodel.ShapeTypes}.
*
* @return the shape type
* @see org.apache.poi.xssf.usermodel.ShapeTypes
* @see org.apache.poi.ss.usermodel.ShapeTypes
*/
public int getShapeType() {
return ctShape.getSpPr().getPrstGeom().getPrst().intValue();
@ -107,8 +107,8 @@ public class XSSFConnector extends XSSFShape {
/**
* Sets the shape types.
*
* @param type the shape type, one of the constants defined in {@link org.apache.poi.xssf.usermodel.ShapeTypes}.
* @see org.apache.poi.xssf.usermodel.ShapeTypes
* @param type the shape type, one of the constants defined in {@link org.apache.poi.ss.usermodel.ShapeTypes}.
* @see org.apache.poi.ss.usermodel.ShapeTypes
*/
public void setShapeType(int type) {
ctShape.getSpPr().getPrstGeom().setPrst(STShapeType.Enum.forInt(type));

View File

@ -17,7 +17,6 @@
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;
/**

View File

@ -39,6 +39,7 @@ public class XSSFDrawing extends POIXMLDocumentPart {
* Root element of the SpreadsheetML Drawing part
*/
private CTDrawing drawing;
private boolean isNew;
/**
* Create a new SpreadsheetML drawing
@ -48,6 +49,7 @@ public class XSSFDrawing extends POIXMLDocumentPart {
protected XSSFDrawing() {
super();
drawing = newDrawing();
isNew = true;
}
/**
@ -91,7 +93,7 @@ public class XSSFDrawing extends POIXMLDocumentPart {
xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"
xmlns:xdr="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing">
*/
xmlOptions.setSaveSyntheticDocumentElement(new QName(CTDrawing.type.getName().getNamespaceURI(), "wsDr", "xdr"));
if(isNew) xmlOptions.setSaveSyntheticDocumentElement(new QName(CTDrawing.type.getName().getNamespaceURI(), "wsDr", "xdr"));
Map map = new HashMap();
map.put("http://schemas.openxmlformats.org/drawingml/2006/main", "a");
map.put(STRelationshipId.type.getName().getNamespaceURI(), "r");

View File

@ -32,7 +32,7 @@ final class XSSFEvaluationCell implements EvaluationCell {
public XSSFEvaluationCell(XSSFCell cell) {
_cell = cell;
_evalSheet = new XSSFEvaluationSheet((XSSFSheet)cell.getSheet());
_evalSheet = new XSSFEvaluationSheet(cell.getSheet());
}
public XSSFEvaluationCell(XSSFCell cell, XSSFEvaluationSheet evaluationSheet) {

View File

@ -75,7 +75,7 @@ public final class XSSFEvaluationWorkbook implements FormulaRenderingWorkbook, E
public EvaluationName getName(String name) {
for(int i=0; i < _uBook.getNumberOfNames(); i++) {
String nameText = _uBook.getNameName(i);
String nameText = _uBook.getNameAt(i).getNameName();
if (name.equalsIgnoreCase(nameText)) {
return new Name(_uBook.getNameAt(i), i, this);
}

View File

@ -16,9 +16,7 @@
==================================================================== */
package org.apache.poi.xssf.usermodel;
import java.util.ArrayList;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.extensions.XSSFColor;
import org.apache.poi.xssf.model.StylesTable;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.*;
@ -92,7 +90,7 @@ public class XSSFFont implements Font {
* get character-set to use.
*
* @return byte - character-set
* @see FontCharset
* @see org.apache.poi.ss.usermodel.FontCharset
*/
public byte getCharSet() {
CTIntProperty charset = ctFont.sizeOfCharsetArray() == 0 ? null : ctFont.getCharsetArray(0);
@ -233,7 +231,7 @@ public class XSSFFont implements Font {
* get type of text underlining to use
*
* @return byte - underlining type
* @see FontUnderline
* @see org.apache.poi.ss.usermodel.FontUnderline
*/
public byte getUnderline() {
CTUnderlineProperty underline = ctFont.sizeOfUArray() == 0 ? null : ctFont.getUArray(0);
@ -529,7 +527,7 @@ public class XSSFFont implements Font {
* get the font family to use.
*
* @return the font family to use
* @see FontFamily
* @see org.apache.poi.ss.usermodel.FontFamily
*/
public int getFamily() {
CTIntProperty family = ctFont.sizeOfFamilyArray() == 0 ? ctFont.addNewFamily() : ctFont.getFamilyArray(0);

View File

@ -17,7 +17,7 @@
package org.apache.poi.xssf.usermodel;
import org.apache.poi.ss.usermodel.PrintSetup;
import org.apache.poi.ss.usermodel.*;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.*;

View File

@ -19,6 +19,7 @@ package org.apache.poi.xssf.usermodel;
import java.io.IOException;
import java.io.OutputStream;
import java.io.InputStream;
import java.util.*;
import javax.xml.namespace.QName;
@ -110,12 +111,18 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
@Override
protected void onDocumentRead() {
try {
worksheet = WorksheetDocument.Factory.parse(getPackagePart().getInputStream()).getWorksheet();
} catch (XmlException e){
throw new POIXMLException(e);
read(getPackagePart().getInputStream());
} catch (IOException e){
throw new POIXMLException(e);
}
}
protected void read(InputStream is) throws IOException {
try {
worksheet = WorksheetDocument.Factory.parse(is).getWorksheet();
} catch (XmlException e){
throw new POIXMLException(e);
}
initRows(worksheet);
columnHelper = new ColumnHelper(worksheet);
@ -1645,6 +1652,13 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
@Override
protected void commit() throws IOException {
PackagePart part = getPackagePart();
OutputStream out = part.getOutputStream();
write(out);
out.close();
}
protected void write(OutputStream out) throws IOException {
if(worksheet.getColsArray().length == 1) {
CTCols col = worksheet.getColsArray(0);
@ -1682,15 +1696,10 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
XmlOptions xmlOptions = new XmlOptions(DEFAULT_XML_OPTIONS);
xmlOptions.setSaveSyntheticDocumentElement(new QName(CTWorksheet.type.getName().getNamespaceURI(), "worksheet"));
Map map = new HashMap();
map.put(STRelationshipId.type.getName().getNamespaceURI(), "r");
xmlOptions.setSaveSuggestedPrefixes(map);
PackagePart part = getPackagePart();
OutputStream out = part.getOutputStream();
worksheet.save(out, xmlOptions);
out.close();
}
}

View File

@ -23,7 +23,7 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.*;
/**
* Represents a shape with a predefined geometry in a SpreadsheetML drawing.
* Possible shape types are defined in {@link ShapeTypes}
* Possible shape types are defined in {@link org.apache.poi.ss.usermodel.ShapeTypes}
*
* @author Yegor Kozlov
*/
@ -109,10 +109,10 @@ public class XSSFSimpleShape extends XSSFShape {
}
/**
* Gets the shape type, one of the constants defined in {@link ShapeTypes}.
* Gets the shape type, one of the constants defined in {@link org.apache.poi.ss.usermodel.ShapeTypes}.
*
* @return the shape type
* @see ShapeTypes
* @see org.apache.poi.ss.usermodel.ShapeTypes
*/
public int getShapeType() {
return ctShape.getSpPr().getPrstGeom().getPrst().intValue();
@ -121,8 +121,8 @@ public class XSSFSimpleShape extends XSSFShape {
/**
* Sets the shape types.
*
* @param type the shape type, one of the constants defined in {@link ShapeTypes}.
* @see ShapeTypes
* @param type the shape type, one of the constants defined in {@link org.apache.poi.ss.usermodel.ShapeTypes}.
* @see org.apache.poi.ss.usermodel.ShapeTypes
*/
public void setShapeType(int type) {
ctShape.getSpPr().getPrstGeom().setPrst(STShapeType.Enum.forInt(type));

View File

@ -17,9 +17,7 @@
package org.apache.poi.xssf.usermodel;
import java.io.IOException;
import java.io.OutputStream;
import java.io.InputStream;
import java.io.*;
import java.util.*;
import javax.xml.namespace.QName;
import org.apache.poi.POIXMLDocument;
@ -102,7 +100,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
*/
private List<XSSFPictureData> pictures;
private static POILogger log = POILogFactory.getLogger(XSSFWorkbook.class);
private static POILogger logger = POILogFactory.getLogger(XSSFWorkbook.class);
/**
* Create a new SpreadsheetML workbook.
@ -176,7 +174,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
for (CTSheet ctSheet : this.workbook.getSheets().getSheetArray()) {
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");
logger.log(POILogger.WARN, "Sheet with name " + ctSheet.getName() + " and r:id " + ctSheet.getId()+ " was defined, but didn't exist in package, skipping");
continue;
}
sh.sheet = ctSheet;
@ -303,29 +301,78 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
return imageNumber - 1;
}
/**
* Create an XSSFSheet from an existing sheet in the XSSFWorkbook.
* The cloned sheet is a deep copy of the original.
*
* @return XSSFSheet representing the cloned sheet.
* @throws IllegalArgumentException if the sheet index in invalid
* @throws POIXMLException if there were errors when cloning
*/
public XSSFSheet cloneSheet(int sheetNum) {
validateSheetIndex(sheetNum);
XSSFSheet srcSheet = sheets.get(sheetNum);
String srcName = getSheetName(sheetNum);
int i = 1;
String name = srcName;
String srcName = srcSheet.getSheetName();
String clonedName = getUniqueSheetName(srcName);
XSSFSheet clonedSheet = createSheet(clonedName);
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
srcSheet.write(out);
clonedSheet.read(new ByteArrayInputStream(out.toByteArray()));
} catch (IOException e){
throw new POIXMLException("Failed to clone sheet", e);
}
CTWorksheet ct = clonedSheet.getCTWorksheet();
if(ct.isSetDrawing()) {
logger.log(POILogger.WARN, "Cloning sheets with drawings is not yet supported.");
ct.unsetDrawing();
}
if(ct.isSetLegacyDrawing()) {
logger.log(POILogger.WARN, "Cloning sheets with comments is not yet supported.");
ct.unsetLegacyDrawing();
}
clonedSheet.setSelected(false);
return clonedSheet;
}
/**
* Generate a valid sheet name based on the existing one. Used when cloning sheets.
*
* @param srcName the original sheet name to
* @return clone sheet name
*/
private String getUniqueSheetName(String srcName) {
int uniqueIndex = 2;
String baseName = srcName;
int bracketPos = srcName.lastIndexOf('(');
if (bracketPos > 0 && srcName.endsWith(")")) {
String suffix = srcName.substring(bracketPos + 1, srcName.length() - ")".length());
try {
uniqueIndex = Integer.parseInt(suffix.trim());
uniqueIndex++;
baseName = srcName.substring(0, bracketPos).trim();
} catch (NumberFormatException e) {
// contents of brackets not numeric
}
}
while (true) {
//Try and find the next sheet name that is unique
String index = Integer.toString(i++);
if (name.length() + index.length() + 2 < 31) {
name = name + "("+index+")";
// Try and find the next sheet name that is unique
String index = Integer.toString(uniqueIndex++);
String name;
if (baseName.length() + index.length() + 2 < 31) {
name = baseName + " (" + index + ")";
} else {
name = name.substring(0, 31 - index.length() - 2) + "(" +index + ")";
name = baseName.substring(0, 31 - index.length() - 2) + "(" + index + ")";
}
//If the sheet name is unique, then set it otherwise move on to the next number.
if (getSheetIndex(name) == -1) {
break;
return name;
}
}
XSSFSheet clonedSheet = createSheet(name);
clonedSheet.getCTWorksheet().set(srcSheet.getCTWorksheet());
return clonedSheet;
}
/**
@ -518,18 +565,6 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
return namedRanges.get(index);
}
/**
* Gets the Named range name at the given index number,
* this method is equivalent to <code>getNameAt(index).getName()</code>
*
* @param index the named range index (0 based)
* @return named range name
* @see #getNameAt(int)
*/
public String getNameName(int index) {
return getNameAt(index).getNameName();
}
/**
* Gets the named range index by his name
* <i>Note:</i>Excel named ranges are case-insensitive and
@ -598,21 +633,6 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
}
/**
* deprecated May 2008
* @deprecated - Misleading name - use getActiveSheetIndex()
*/
public short getSelectedTab() {
short i = 0;
for (XSSFSheet sheet : this.sheets) {
if (sheet.isSelected()) {
return i;
}
++i;
}
return -1;
}
/**
* Get sheet with the given name (case insensitive match)
*

View File

@ -19,8 +19,8 @@ package org.apache.poi.xssf.usermodel.extensions;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCellAlignment;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STHorizontalAlignment;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STVerticalAlignment;
import org.apache.poi.xssf.usermodel.HorizontalAlignment;
import org.apache.poi.xssf.usermodel.VerticalAlignment;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.VerticalAlignment;
/**

View File

@ -17,7 +17,7 @@
package org.apache.poi.xssf.usermodel.extensions;
import org.apache.poi.xssf.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBorder;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBorderPr;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STBorderStyle;

View File

@ -17,15 +17,16 @@
package org.apache.poi.xssf.usermodel;
import junit.framework.AssertionFailedError;
import junit.framework.TestCase;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.xssf.model.StylesTable;
import org.apache.poi.xssf.usermodel.extensions.XSSFCellBorder;
import org.apache.poi.xssf.usermodel.extensions.XSSFCellFill;
import org.apache.poi.xssf.usermodel.extensions.XSSFColor;
import org.apache.poi.xssf.usermodel.extensions.XSSFCellBorder.BorderSide;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.*;

View File

@ -2,11 +2,7 @@ package org.apache.poi.xssf.usermodel;
import junit.framework.TestCase;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.XSSFTestDataSamples;
import org.apache.poi.xssf.usermodel.extensions.XSSFColor;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBooleanProperty;

View File

@ -20,6 +20,10 @@ package org.apache.poi.xssf.usermodel;
import junit.framework.TestCase;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.*;
import org.apache.poi.ss.usermodel.PaperSize;
import org.apache.poi.ss.usermodel.PageOrder;
import org.apache.poi.ss.usermodel.PrintOrientation;
import org.apache.poi.ss.usermodel.PrintCellComments;
/**
* Tests for {@link XSSFPrintSetup}

View File

@ -19,19 +19,13 @@ package org.apache.poi.xssf.usermodel;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import junit.framework.TestCase;
import org.apache.poi.hssf.HSSFTestDataSamples;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.Name;
import org.apache.poi.ss.usermodel.RichTextString;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.StylesSource;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.XSSFTestDataSamples;
import org.apache.poi.xssf.model.StylesTable;
import org.openxml4j.opc.ContentTypes;
@ -99,17 +93,6 @@ public final class TestXSSFWorkbook extends TestCase {
assertSame(sheet1, workbook.getSheetAt(0));
}
public void testSetSelectedTab() {
XSSFWorkbook workbook = new XSSFWorkbook();
workbook.createSheet("sheet1");
workbook.createSheet("sheet2");
assertEquals(0, workbook.getSelectedTab());
workbook.setSelectedTab((short) 0);
assertEquals(0, workbook.getSelectedTab());
workbook.setSelectedTab((short) 1);
assertEquals(1, workbook.getSelectedTab());
}
public void testSetSheetName() {
XSSFWorkbook workbook = new XSSFWorkbook();
workbook.createSheet("sheet1");
@ -119,16 +102,32 @@ public final class TestXSSFWorkbook extends TestCase {
}
public void testCloneSheet() {
XSSFWorkbook workbook = new XSSFWorkbook();
workbook.createSheet("sheet");
workbook.cloneSheet(0);
assertEquals(2, workbook.getNumberOfSheets());
assertEquals("sheet(1)", workbook.getSheetName(1));
workbook.setSheetName(1, "clonedsheet");
workbook.cloneSheet(1);
assertEquals(3, workbook.getNumberOfSheets());
assertEquals("clonedsheet(1)", workbook.getSheetName(2));
}
XSSFWorkbook book = new XSSFWorkbook();
XSSFSheet sheet = book.createSheet("TEST");
sheet.createRow(0).createCell(0).setCellValue("Test");
sheet.createRow(1).createCell(0).setCellValue(36.6);
sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, 2));
sheet.addMergedRegion(new CellRangeAddress(1, 2, 0, 2));
assertTrue(sheet.isSelected());
XSSFSheet clonedSheet = book.cloneSheet(0);
assertEquals("TEST (2)", clonedSheet.getSheetName());
assertEquals(2, clonedSheet.getPhysicalNumberOfRows());
assertEquals(2, clonedSheet.getNumMergedRegions());
assertFalse(clonedSheet.isSelected());
//cloned sheet is a deep copy, adding rows in the original does not affect the clone
sheet.createRow(2).createCell(0).setCellValue(1);
sheet.addMergedRegion(new CellRangeAddress(0, 2, 0, 2));
assertEquals(2, clonedSheet.getPhysicalNumberOfRows());
assertEquals(2, clonedSheet.getPhysicalNumberOfRows());
clonedSheet.createRow(2).createCell(0).setCellValue(1);
clonedSheet.addMergedRegion(new CellRangeAddress(0, 2, 0, 2));
assertEquals(3, clonedSheet.getPhysicalNumberOfRows());
assertEquals(3, clonedSheet.getPhysicalNumberOfRows());
}
public void testGetSheetByName() {
XSSFWorkbook workbook = new XSSFWorkbook();
@ -209,19 +208,6 @@ public final class TestXSSFWorkbook extends TestCase {
nwb.setRepeatingRowsAndColumns(1, -1, -1, -1, -1);
if (false) {
// In case you fancy checking in excel, to ensure it
// won't complain about the file now
try {
File tempFile = File.createTempFile("POI-45126-", ".xlsx");
FileOutputStream fout = new FileOutputStream(tempFile);
nwb.write(fout);
fout.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
@ -327,7 +313,6 @@ public final class TestXSSFWorkbook extends TestCase {
Font font=workbook.createFont();
((XSSFFont)font).setBold(true);
font.setUnderline(Font.U_DOUBLE);
StylesTable styleSource=new StylesTable();
fontFind=workbook.findFont(Font.BOLDWEIGHT_BOLD, IndexedColors.BLACK.getIndex(), (short)15, "Calibri", false, false, Font.SS_NONE, Font.U_DOUBLE);
assertNull(fontFind);
}
@ -440,8 +425,7 @@ public final class TestXSSFWorkbook extends TestCase {
StylesTable ss = workbook.getStylesSource();
assertNotNull(ss);
assertTrue(ss instanceof StylesTable);
StylesTable st = (StylesTable)ss;
StylesTable st = ss;
// Has 8 number formats
assertEquals(8, st._getNumberFormatSize());
@ -467,8 +451,6 @@ public final class TestXSSFWorkbook extends TestCase {
ss = workbook.getStylesSource();
assertNotNull(ss);
assertTrue(ss instanceof StylesTable);
st = (StylesTable)ss;
assertEquals(10, st._getNumberFormatSize());
assertEquals(2, st._getFontsSize());
@ -502,7 +484,7 @@ public final class TestXSSFWorkbook extends TestCase {
assertEquals("ForB3", workbook.getNameAt(1).getNameName());
assertEquals("B3 Comment", workbook.getNameAt(1).getComment());
assertEquals("ForA2", workbook.getNameName(0));
assertEquals("ForA2", workbook.getNameAt(0).getNameName());
assertEquals(1, workbook.getNameIndex("ForB3"));
assertEquals(-1, workbook.getNameIndex("ForB3!!"));

View File

@ -19,7 +19,7 @@ package org.apache.poi.xssf.usermodel.extensions;
import junit.framework.TestCase;
import org.apache.poi.xssf.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.xssf.usermodel.extensions.XSSFCellBorder.BorderSide;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBorder;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBorderPr;

View File

@ -18,7 +18,6 @@
package org.apache.poi.xssf.usermodel.extensions;
import org.apache.poi.xssf.usermodel.FillPatternType;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTColor;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFill;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPatternFill;