git-svn-id: https://svn.apache.org/repos/asf/poi/branches/ooxml@612495 13f79535-47bb-0310-9956-ffa450edef68pull/6/head
@@ -0,0 +1,264 @@ | |||
/* ==================================================================== | |||
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.Calendar; | |||
import java.util.Date; | |||
public interface Cell { | |||
/** | |||
* Numeric Cell type (0) | |||
* @see #setCellType(int) | |||
* @see #getCellType() | |||
*/ | |||
public final static int CELL_TYPE_NUMERIC = 0; | |||
/** | |||
* String Cell type (1) | |||
* @see #setCellType(int) | |||
* @see #getCellType() | |||
*/ | |||
public final static int CELL_TYPE_STRING = 1; | |||
/** | |||
* Formula Cell type (2) | |||
* @see #setCellType(int) | |||
* @see #getCellType() | |||
*/ | |||
public final static int CELL_TYPE_FORMULA = 2; | |||
/** | |||
* Blank Cell type (3) | |||
* @see #setCellType(int) | |||
* @see #getCellType() | |||
*/ | |||
public final static int CELL_TYPE_BLANK = 3; | |||
/** | |||
* Boolean Cell type (4) | |||
* @see #setCellType(int) | |||
* @see #getCellType() | |||
*/ | |||
public final static int CELL_TYPE_BOOLEAN = 4; | |||
/** | |||
* Error Cell type (5) | |||
* @see #setCellType(int) | |||
* @see #getCellType() | |||
*/ | |||
public final static int CELL_TYPE_ERROR = 5; | |||
/** | |||
* set the cell's number within the row (0 based) | |||
* @param num short the cell number | |||
*/ | |||
void setCellNum(short num); | |||
/** | |||
* get the cell's number within the row | |||
* @return short reperesenting the column number (logical!) | |||
*/ | |||
short getCellNum(); | |||
/** | |||
* set the cells type (numeric, formula or string) | |||
* @see #CELL_TYPE_NUMERIC | |||
* @see #CELL_TYPE_STRING | |||
* @see #CELL_TYPE_FORMULA | |||
* @see #CELL_TYPE_BLANK | |||
* @see #CELL_TYPE_BOOLEAN | |||
* @see #CELL_TYPE_ERROR | |||
*/ | |||
void setCellType(int cellType); | |||
/** | |||
* get the cells type (numeric, formula or string) | |||
* @see #CELL_TYPE_STRING | |||
* @see #CELL_TYPE_NUMERIC | |||
* @see #CELL_TYPE_FORMULA | |||
* @see #CELL_TYPE_BOOLEAN | |||
* @see #CELL_TYPE_ERROR | |||
*/ | |||
int getCellType(); | |||
/** | |||
* set a numeric value for the cell | |||
* | |||
* @param value the numeric value to set this cell to. For formulas we'll set the | |||
* precalculated value, for numerics we'll set its value. For other types we | |||
* will change the cell to a numeric cell and set its value. | |||
*/ | |||
void setCellValue(double value); | |||
/** | |||
* set a date value for the cell. Excel treats dates as numeric so you will need to format the cell as | |||
* a date. | |||
* | |||
* @param value the date value to set this cell to. For formulas we'll set the | |||
* precalculated value, for numerics we'll set its value. For other types we | |||
* will change the cell to a numeric cell and set its value. | |||
*/ | |||
void setCellValue(Date value); | |||
/** | |||
* set a date value for the cell. Excel treats dates as numeric so you will need to format the cell as | |||
* a date. | |||
* | |||
* @param value the date value to set this cell to. For formulas we'll set the | |||
* precalculated value, for numerics we'll set its value. For othertypes we | |||
* will change the cell to a numeric cell and set its value. | |||
*/ | |||
void setCellValue(Calendar value); | |||
/** | |||
* set a string value for the cell. Please note that if you are using | |||
* full 16 bit unicode you should call <code>setEncoding()</code> first. | |||
* | |||
* @param value value to set the cell to. For formulas we'll set the formula | |||
* string, for String cells we'll set its value. For other types we will | |||
* change the cell to a string cell and set its value. | |||
* If value is null then we will change the cell to a Blank cell. | |||
*/ | |||
void setCellValue(RichTextString value); | |||
void setCellFormula(String formula); | |||
String getCellFormula(); | |||
/** | |||
* get the value of the cell as a number. For strings we throw an exception. | |||
* For blank cells we return a 0. | |||
*/ | |||
double getNumericCellValue(); | |||
/** | |||
* get the value of the cell as a date. For strings we throw an exception. | |||
* For blank cells we return a null. | |||
*/ | |||
Date getDateCellValue(); | |||
/** | |||
* get the value of the cell as a string - for numeric cells we throw an exception. | |||
* For blank cells we return an empty string. | |||
* For formulaCells that are not string Formulas, we return empty String | |||
*/ | |||
RichTextString getRichStringCellValue(); | |||
/** | |||
* set a boolean value for the cell | |||
* | |||
* @param value the boolean value to set this cell to. For formulas we'll set the | |||
* precalculated value, for booleans we'll set its value. For other types we | |||
* will change the cell to a boolean cell and set its value. | |||
*/ | |||
void setCellValue(boolean value); | |||
/** | |||
* set a error value for the cell | |||
* | |||
* @param value the error value to set this cell to. For formulas we'll set the | |||
* precalculated value ??? IS THIS RIGHT??? , for errors we'll set | |||
* its value. For other types we will change the cell to an error | |||
* cell and set its value. | |||
*/ | |||
void setCellErrorValue(byte value); | |||
/** | |||
* get the value of the cell as a boolean. For strings, numbers, and errors, we throw an exception. | |||
* For blank cells we return a false. | |||
*/ | |||
boolean getBooleanCellValue(); | |||
/** | |||
* get the value of the cell as an error code. For strings, numbers, and booleans, we throw an exception. | |||
* For blank cells we return a 0. | |||
*/ | |||
byte getErrorCellValue(); | |||
/** | |||
* set the style for the cell. The style should be an HSSFCellStyle created/retreived from | |||
* the HSSFWorkbook. | |||
* | |||
* @param style reference contained in the workbook | |||
* @see org.apache.poi.hssf.usermodel.HSSFWorkbook#createCellStyle() | |||
* @see org.apache.poi.hssf.usermodel.HSSFWorkbook#getCellStyleAt(short) | |||
*/ | |||
void setCellStyle(CellStyle style); | |||
/** | |||
* get the style for the cell. This is a reference to a cell style contained in the workbook | |||
* object. | |||
* @see org.apache.poi.hssf.usermodel.HSSFWorkbook#getCellStyleAt(short) | |||
*/ | |||
CellStyle getCellStyle(); | |||
/** | |||
* Sets this cell as the active cell for the worksheet | |||
*/ | |||
void setAsActiveCell(); | |||
/** | |||
* Returns a string representation of the cell | |||
* | |||
* This method returns a simple representation, | |||
* anthing more complex should be in user code, with | |||
* knowledge of the semantics of the sheet being processed. | |||
* | |||
* Formula cells return the formula string, | |||
* rather than the formula result. | |||
* Dates are displayed in dd-MMM-yyyy format | |||
* Errors are displayed as #ERR<errIdx> | |||
*/ | |||
String toString(); | |||
/** | |||
* Assign a comment to this cell | |||
* | |||
* @param comment comment associated with this cell | |||
*/ | |||
void setCellComment(Comment comment); | |||
/** | |||
* Returns comment associated with this cell | |||
* | |||
* @return comment associated with this cell | |||
*/ | |||
Comment getCellComment(); | |||
} |
@@ -0,0 +1,704 @@ | |||
/* ==================================================================== | |||
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 CellStyle { | |||
/** | |||
* general (normal) horizontal alignment | |||
*/ | |||
public final static short ALIGN_GENERAL = 0x0; | |||
/** | |||
* left-justified horizontal alignment | |||
*/ | |||
public final static short ALIGN_LEFT = 0x1; | |||
/** | |||
* center horizontal alignment | |||
*/ | |||
public final static short ALIGN_CENTER = 0x2; | |||
/** | |||
* right-justified horizontal alignment | |||
*/ | |||
public final static short ALIGN_RIGHT = 0x3; | |||
/** | |||
* fill? horizontal alignment | |||
*/ | |||
public final static short ALIGN_FILL = 0x4; | |||
/** | |||
* justified horizontal alignment | |||
*/ | |||
public final static short ALIGN_JUSTIFY = 0x5; | |||
/** | |||
* center-selection? horizontal alignment | |||
*/ | |||
public final static short ALIGN_CENTER_SELECTION = 0x6; | |||
/** | |||
* top-aligned vertical alignment | |||
*/ | |||
public final static short VERTICAL_TOP = 0x0; | |||
/** | |||
* center-aligned vertical alignment | |||
*/ | |||
public final static short VERTICAL_CENTER = 0x1; | |||
/** | |||
* bottom-aligned vertical alignment | |||
*/ | |||
public final static short VERTICAL_BOTTOM = 0x2; | |||
/** | |||
* vertically justified vertical alignment | |||
*/ | |||
public final static short VERTICAL_JUSTIFY = 0x3; | |||
/** | |||
* No border | |||
*/ | |||
public final static short BORDER_NONE = 0x0; | |||
/** | |||
* Thin border | |||
*/ | |||
public final static short BORDER_THIN = 0x1; | |||
/** | |||
* Medium border | |||
*/ | |||
public final static short BORDER_MEDIUM = 0x2; | |||
/** | |||
* dash border | |||
*/ | |||
public final static short BORDER_DASHED = 0x3; | |||
/** | |||
* dot border | |||
*/ | |||
public final static short BORDER_HAIR = 0x4; | |||
/** | |||
* Thick border | |||
*/ | |||
public final static short BORDER_THICK = 0x5; | |||
/** | |||
* double-line border | |||
*/ | |||
public final static short BORDER_DOUBLE = 0x6; | |||
/** | |||
* hair-line border | |||
*/ | |||
public final static short BORDER_DOTTED = 0x7; | |||
/** | |||
* Medium dashed border | |||
*/ | |||
public final static short BORDER_MEDIUM_DASHED = 0x8; | |||
/** | |||
* dash-dot border | |||
*/ | |||
public final static short BORDER_DASH_DOT = 0x9; | |||
/** | |||
* medium dash-dot border | |||
*/ | |||
public final static short BORDER_MEDIUM_DASH_DOT = 0xA; | |||
/** | |||
* dash-dot-dot border | |||
*/ | |||
public final static short BORDER_DASH_DOT_DOT = 0xB; | |||
/** | |||
* medium dash-dot-dot border | |||
*/ | |||
public final static short BORDER_MEDIUM_DASH_DOT_DOT = 0xC; | |||
/** | |||
* slanted dash-dot border | |||
*/ | |||
public final static short BORDER_SLANTED_DASH_DOT = 0xD; | |||
/** No background */ | |||
public final static short NO_FILL = 0; | |||
/** Solidly filled */ | |||
public final static short SOLID_FOREGROUND = 1; | |||
/** Small fine dots */ | |||
public final static short FINE_DOTS = 2; | |||
/** Wide dots */ | |||
public final static short ALT_BARS = 3; | |||
/** Sparse dots */ | |||
public final static short SPARSE_DOTS = 4; | |||
/** Thick horizontal bands */ | |||
public final static short THICK_HORZ_BANDS = 5; | |||
/** Thick vertical bands */ | |||
public final static short THICK_VERT_BANDS = 6; | |||
/** Thick backward facing diagonals */ | |||
public final static short THICK_BACKWARD_DIAG = 7; | |||
/** Thick forward facing diagonals */ | |||
public final static short THICK_FORWARD_DIAG = 8; | |||
/** Large spots */ | |||
public final static short BIG_SPOTS = 9; | |||
/** Brick-like layout */ | |||
public final static short BRICKS = 10; | |||
/** Thin horizontal bands */ | |||
public final static short THIN_HORZ_BANDS = 11; | |||
/** Thin vertical bands */ | |||
public final static short THIN_VERT_BANDS = 12; | |||
/** Thin backward diagonal */ | |||
public final static short THIN_BACKWARD_DIAG = 13; | |||
/** Thin forward diagonal */ | |||
public final static short THIN_FORWARD_DIAG = 14; | |||
/** Squares */ | |||
public final static short SQUARES = 15; | |||
/** Diamonds */ | |||
public final static short DIAMONDS = 16; | |||
/** Less Dots */ | |||
public final static short LESS_DOTS = 17; | |||
/** Least Dots */ | |||
public final static short LEAST_DOTS = 18; | |||
/** | |||
* get the index within the HSSFWorkbook (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) | |||
*/ | |||
short getIndex(); | |||
/** | |||
* set the data format (must be a valid format) | |||
* @see org.apache.poi.hssf.usermodel.HSSFDataFormat | |||
*/ | |||
void setDataFormat(short fmt); | |||
/** | |||
* get the index of the format | |||
* @see org.apache.poi.hssf.usermodel.HSSFDataFormat | |||
*/ | |||
short getDataFormat(); | |||
/** | |||
* 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) | |||
*/ | |||
void setFont(Font font); | |||
/** | |||
* gets the index of the font for this style | |||
* @see org.apache.poi.hssf.usermodel.HSSFWorkbook#getFontAt(short) | |||
*/ | |||
short getFontIndex(); | |||
/** | |||
* gets the font for this style | |||
* @param parentWorkbook The HSSFWorkbook that this style belongs to | |||
* @see org.apache.poi.hssf.usermodel.HSSFCellStyle#getFontIndex() | |||
* @see org.apache.poi.hssf.usermodel.HSSFWorkbook#getFontAt(short) | |||
*/ | |||
Font getFont(Workbook parentWorkbook); | |||
/** | |||
* set the cell's using this style to be hidden | |||
* @param hidden - whether the cell using this style should be hidden | |||
*/ | |||
void setHidden(boolean hidden); | |||
/** | |||
* get whether the cell's using this style are to be hidden | |||
* @return hidden - whether the cell using this style should be hidden | |||
*/ | |||
boolean getHidden(); | |||
/** | |||
* set the cell's using this style to be locked | |||
* @param locked - whether the cell using this style should be locked | |||
*/ | |||
void setLocked(boolean locked); | |||
/** | |||
* get whether the cell's using this style are to be locked | |||
* @return hidden - whether the cell using this style should be locked | |||
*/ | |||
boolean getLocked(); | |||
/** | |||
* set the type of horizontal alignment for the cell | |||
* @param align - the type of alignment | |||
* @see #ALIGN_GENERAL | |||
* @see #ALIGN_LEFT | |||
* @see #ALIGN_CENTER | |||
* @see #ALIGN_RIGHT | |||
* @see #ALIGN_FILL | |||
* @see #ALIGN_JUSTIFY | |||
* @see #ALIGN_CENTER_SELECTION | |||
*/ | |||
void setAlignment(short align); | |||
/** | |||
* get the type of horizontal alignment for the cell | |||
* @return align - the type of alignment | |||
* @see #ALIGN_GENERAL | |||
* @see #ALIGN_LEFT | |||
* @see #ALIGN_CENTER | |||
* @see #ALIGN_RIGHT | |||
* @see #ALIGN_FILL | |||
* @see #ALIGN_JUSTIFY | |||
* @see #ALIGN_CENTER_SELECTION | |||
*/ | |||
short getAlignment(); | |||
/** | |||
* set whether the text should be wrapped | |||
* @param wrapped wrap text or not | |||
*/ | |||
void setWrapText(boolean wrapped); | |||
/** | |||
* get whether the text should be wrapped | |||
* @return wrap text or not | |||
*/ | |||
boolean getWrapText(); | |||
/** | |||
* set the type of vertical alignment for the cell | |||
* @param align the type of alignment | |||
* @see #VERTICAL_TOP | |||
* @see #VERTICAL_CENTER | |||
* @see #VERTICAL_BOTTOM | |||
* @see #VERTICAL_JUSTIFY | |||
*/ | |||
void setVerticalAlignment(short align); | |||
/** | |||
* get the type of vertical alignment for the cell | |||
* @return align the type of alignment | |||
* @see #VERTICAL_TOP | |||
* @see #VERTICAL_CENTER | |||
* @see #VERTICAL_BOTTOM | |||
* @see #VERTICAL_JUSTIFY | |||
*/ | |||
short getVerticalAlignment(); | |||
/** | |||
* set the degree of rotation for the text in the cell | |||
* @param rotation degrees (between -90 and 90 degrees) | |||
*/ | |||
void setRotation(short rotation); | |||
/** | |||
* get the degree of rotation for the text in the cell | |||
* @return rotation degrees (between -90 and 90 degrees) | |||
*/ | |||
short getRotation(); | |||
/** | |||
* set the number of spaces to indent the text in the cell | |||
* @param indent - number of spaces | |||
*/ | |||
void setIndention(short indent); | |||
/** | |||
* get the number of spaces to indent the text in the cell | |||
* @return indent - number of spaces | |||
*/ | |||
short getIndention(); | |||
/** | |||
* set the type of border to use for the left border of the cell | |||
* @param border type | |||
* @see #BORDER_NONE | |||
* @see #BORDER_THIN | |||
* @see #BORDER_MEDIUM | |||
* @see #BORDER_DASHED | |||
* @see #BORDER_DOTTED | |||
* @see #BORDER_THICK | |||
* @see #BORDER_DOUBLE | |||
* @see #BORDER_HAIR | |||
* @see #BORDER_MEDIUM_DASHED | |||
* @see #BORDER_DASH_DOT | |||
* @see #BORDER_MEDIUM_DASH_DOT | |||
* @see #BORDER_DASH_DOT_DOT | |||
* @see #BORDER_MEDIUM_DASH_DOT_DOT | |||
* @see #BORDER_SLANTED_DASH_DOT | |||
*/ | |||
void setBorderLeft(short border); | |||
/** | |||
* get the type of border to use for the left border of the cell | |||
* @return border type | |||
* @see #BORDER_NONE | |||
* @see #BORDER_THIN | |||
* @see #BORDER_MEDIUM | |||
* @see #BORDER_DASHED | |||
* @see #BORDER_DOTTED | |||
* @see #BORDER_THICK | |||
* @see #BORDER_DOUBLE | |||
* @see #BORDER_HAIR | |||
* @see #BORDER_MEDIUM_DASHED | |||
* @see #BORDER_DASH_DOT | |||
* @see #BORDER_MEDIUM_DASH_DOT | |||
* @see #BORDER_DASH_DOT_DOT | |||
* @see #BORDER_MEDIUM_DASH_DOT_DOT | |||
* @see #BORDER_SLANTED_DASH_DOT | |||
*/ | |||
short getBorderLeft(); | |||
/** | |||
* set the type of border to use for the right border of the cell | |||
* @param border type | |||
* @see #BORDER_NONE | |||
* @see #BORDER_THIN | |||
* @see #BORDER_MEDIUM | |||
* @see #BORDER_DASHED | |||
* @see #BORDER_DOTTED | |||
* @see #BORDER_THICK | |||
* @see #BORDER_DOUBLE | |||
* @see #BORDER_HAIR | |||
* @see #BORDER_MEDIUM_DASHED | |||
* @see #BORDER_DASH_DOT | |||
* @see #BORDER_MEDIUM_DASH_DOT | |||
* @see #BORDER_DASH_DOT_DOT | |||
* @see #BORDER_MEDIUM_DASH_DOT_DOT | |||
* @see #BORDER_SLANTED_DASH_DOT | |||
*/ | |||
void setBorderRight(short border); | |||
/** | |||
* get the type of border to use for the right border of the cell | |||
* @return border type | |||
* @see #BORDER_NONE | |||
* @see #BORDER_THIN | |||
* @see #BORDER_MEDIUM | |||
* @see #BORDER_DASHED | |||
* @see #BORDER_DOTTED | |||
* @see #BORDER_THICK | |||
* @see #BORDER_DOUBLE | |||
* @see #BORDER_HAIR | |||
* @see #BORDER_MEDIUM_DASHED | |||
* @see #BORDER_DASH_DOT | |||
* @see #BORDER_MEDIUM_DASH_DOT | |||
* @see #BORDER_DASH_DOT_DOT | |||
* @see #BORDER_MEDIUM_DASH_DOT_DOT | |||
* @see #BORDER_SLANTED_DASH_DOT | |||
*/ | |||
short getBorderRight(); | |||
/** | |||
* set the type of border to use for the top border of the cell | |||
* @param border type | |||
* @see #BORDER_NONE | |||
* @see #BORDER_THIN | |||
* @see #BORDER_MEDIUM | |||
* @see #BORDER_DASHED | |||
* @see #BORDER_DOTTED | |||
* @see #BORDER_THICK | |||
* @see #BORDER_DOUBLE | |||
* @see #BORDER_HAIR | |||
* @see #BORDER_MEDIUM_DASHED | |||
* @see #BORDER_DASH_DOT | |||
* @see #BORDER_MEDIUM_DASH_DOT | |||
* @see #BORDER_DASH_DOT_DOT | |||
* @see #BORDER_MEDIUM_DASH_DOT_DOT | |||
* @see #BORDER_SLANTED_DASH_DOT | |||
*/ | |||
void setBorderTop(short border); | |||
/** | |||
* get the type of border to use for the top border of the cell | |||
* @return border type | |||
* @see #BORDER_NONE | |||
* @see #BORDER_THIN | |||
* @see #BORDER_MEDIUM | |||
* @see #BORDER_DASHED | |||
* @see #BORDER_DOTTED | |||
* @see #BORDER_THICK | |||
* @see #BORDER_DOUBLE | |||
* @see #BORDER_HAIR | |||
* @see #BORDER_MEDIUM_DASHED | |||
* @see #BORDER_DASH_DOT | |||
* @see #BORDER_MEDIUM_DASH_DOT | |||
* @see #BORDER_DASH_DOT_DOT | |||
* @see #BORDER_MEDIUM_DASH_DOT_DOT | |||
* @see #BORDER_SLANTED_DASH_DOT | |||
*/ | |||
short getBorderTop(); | |||
/** | |||
* set the type of border to use for the bottom border of the cell | |||
* @param border type | |||
* @see #BORDER_NONE | |||
* @see #BORDER_THIN | |||
* @see #BORDER_MEDIUM | |||
* @see #BORDER_DASHED | |||
* @see #BORDER_DOTTED | |||
* @see #BORDER_THICK | |||
* @see #BORDER_DOUBLE | |||
* @see #BORDER_HAIR | |||
* @see #BORDER_MEDIUM_DASHED | |||
* @see #BORDER_DASH_DOT | |||
* @see #BORDER_MEDIUM_DASH_DOT | |||
* @see #BORDER_DASH_DOT_DOT | |||
* @see #BORDER_MEDIUM_DASH_DOT_DOT | |||
* @see #BORDER_SLANTED_DASH_DOT | |||
*/ | |||
void setBorderBottom(short border); | |||
/** | |||
* get the type of border to use for the bottom border of the cell | |||
* @return border type | |||
* @see #BORDER_NONE | |||
* @see #BORDER_THIN | |||
* @see #BORDER_MEDIUM | |||
* @see #BORDER_DASHED | |||
* @see #BORDER_DOTTED | |||
* @see #BORDER_THICK | |||
* @see #BORDER_DOUBLE | |||
* @see #BORDER_HAIR | |||
* @see #BORDER_MEDIUM_DASHED | |||
* @see #BORDER_DASH_DOT | |||
* @see #BORDER_MEDIUM_DASH_DOT | |||
* @see #BORDER_DASH_DOT_DOT | |||
* @see #BORDER_MEDIUM_DASH_DOT_DOT | |||
* @see #BORDER_SLANTED_DASH_DOT | |||
*/ | |||
short getBorderBottom(); | |||
/** | |||
* set the color to use for the left border | |||
* @param color The index of the color definition | |||
*/ | |||
void setLeftBorderColor(short color); | |||
/** | |||
* 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(); | |||
/** | |||
* set the color to use for the right border | |||
* @param color The index of the color definition | |||
*/ | |||
void setRightBorderColor(short color); | |||
/** | |||
* 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 getRightBorderColor(); | |||
/** | |||
* set the color to use for the top border | |||
* @param color The index of the color definition | |||
*/ | |||
void setTopBorderColor(short color); | |||
/** | |||
* 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 | |||
*/ | |||
short getTopBorderColor(); | |||
/** | |||
* set the color to use for the bottom border | |||
* @param color The index of the color definition | |||
*/ | |||
void setBottomBorderColor(short color); | |||
/** | |||
* 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 getBottomBorderColor(); | |||
/** | |||
* setting to one fills the cell with the foreground color... No idea about | |||
* other values | |||
* | |||
* @see #NO_FILL | |||
* @see #SOLID_FOREGROUND | |||
* @see #FINE_DOTS | |||
* @see #ALT_BARS | |||
* @see #SPARSE_DOTS | |||
* @see #THICK_HORZ_BANDS | |||
* @see #THICK_VERT_BANDS | |||
* @see #THICK_BACKWARD_DIAG | |||
* @see #THICK_FORWARD_DIAG | |||
* @see #BIG_SPOTS | |||
* @see #BRICKS | |||
* @see #THIN_HORZ_BANDS | |||
* @see #THIN_VERT_BANDS | |||
* @see #THIN_BACKWARD_DIAG | |||
* @see #THIN_FORWARD_DIAG | |||
* @see #SQUARES | |||
* @see #DIAMONDS | |||
* | |||
* @param fp fill pattern (set to 1 to fill w/foreground color) | |||
*/ | |||
void setFillPattern(short fp); | |||
/** | |||
* get the fill pattern (??) - set to 1 to fill with foreground color | |||
* @return fill pattern | |||
*/ | |||
short getFillPattern(); | |||
/** | |||
* 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 | |||
*/ | |||
void setFillBackgroundColor(short bg); | |||
/** | |||
* get the background fill color | |||
* @see org.apache.poi.hssf.usermodel.HSSFPalette#getColor(short) | |||
* @return fill color | |||
*/ | |||
short getFillBackgroundColor(); | |||
/** | |||
* set the foreground fill color | |||
* <i>Note: Ensure Foreground color is set prior to background color.</i> | |||
* @param bg color | |||
*/ | |||
void setFillForegroundColor(short bg); | |||
/** | |||
* get the foreground fill color | |||
* @see org.apache.poi.hssf.usermodel.HSSFPalette#getColor(short) | |||
* @return fill color | |||
*/ | |||
short getFillForegroundColor(); | |||
} |
@@ -0,0 +1,40 @@ | |||
/* ==================================================================== | |||
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 Color { | |||
/** | |||
* @return index to the standard palette | |||
*/ | |||
short getIndex(); | |||
/** | |||
* @return triplet representation like that in Excel | |||
*/ | |||
short[] getTriplet(); | |||
/** | |||
* @return a hex string exactly like a gnumeric triplet | |||
*/ | |||
String getHexString(); | |||
} |
@@ -0,0 +1,86 @@ | |||
/* ==================================================================== | |||
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 Comment { | |||
/** | |||
* Returns whether this comment is visible. | |||
* | |||
* @param visible <code>true</code> if the comment is visible, <code>false</code> otherwise | |||
*/ | |||
void setVisible(boolean visible); | |||
/** | |||
* Sets whether this comment is visible. | |||
* | |||
* @return <code>true</code> if the comment is visible, <code>false</code> otherwise | |||
*/ | |||
boolean isVisible(); | |||
/** | |||
* Return the row of the cell that contains the comment | |||
* | |||
* @return the 0-based row of the cell that contains the comment | |||
*/ | |||
int getRow(); | |||
/** | |||
* Set the row of the cell that contains the comment | |||
* | |||
* @param row the 0-based row of the cell that contains the comment | |||
*/ | |||
void setRow(int row); | |||
/** | |||
* Return the column of the cell that contains the comment | |||
* | |||
* @return the 0-based column of the cell that contains the comment | |||
*/ | |||
short getColumn(); | |||
/** | |||
* Set the column of the cell that contains the comment | |||
* | |||
* @param col the 0-based column of the cell that contains the comment | |||
*/ | |||
void setColumn(short col); | |||
/** | |||
* Name of the original comment author | |||
* | |||
* @return the name of the original author of the comment | |||
*/ | |||
String getAuthor(); | |||
/** | |||
* Name of the original comment author | |||
* | |||
* @param author the name of the original author of the comment | |||
*/ | |||
void setAuthor(String author); | |||
/** | |||
* Sets the rich text string used by this comment. | |||
* | |||
* @param string Sets the rich text string used by this object. | |||
*/ | |||
void setString(RichTextString string); | |||
} |
@@ -0,0 +1,39 @@ | |||
/* ==================================================================== | |||
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 DataFormat { | |||
/** | |||
* get the format index that matches the given format string. | |||
* Creates a new format if one is not found. Aliases text to the proper format. | |||
* @param format string matching a built in format | |||
* @return index of format. | |||
*/ | |||
short getFormat(String format); | |||
/** | |||
* get the format string that matches the given format index | |||
* @param index of a format | |||
* @return string represented at index of format or null if there is not a format at that index | |||
*/ | |||
String getFormat(short index); | |||
} |
@@ -0,0 +1,301 @@ | |||
/* ==================================================================== | |||
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 Font { | |||
/** | |||
* Arial font | |||
*/ | |||
public final static String FONT_ARIAL = "Arial"; | |||
/** | |||
* Normal boldness (not bold) | |||
*/ | |||
public final static short BOLDWEIGHT_NORMAL = 0x190; | |||
/** | |||
* Bold boldness (bold) | |||
*/ | |||
public final static short BOLDWEIGHT_BOLD = 0x2bc; | |||
/** | |||
* normal type of black color. | |||
*/ | |||
public final static short COLOR_NORMAL = 0x7fff; | |||
/** | |||
* Dark Red color | |||
*/ | |||
public final static short COLOR_RED = 0xa; | |||
/** | |||
* no type offsetting (not super or subscript) | |||
*/ | |||
public final static short SS_NONE = 0; | |||
/** | |||
* superscript | |||
*/ | |||
public final static short SS_SUPER = 1; | |||
/** | |||
* subscript | |||
*/ | |||
public final static short SS_SUB = 2; | |||
/** | |||
* not underlined | |||
*/ | |||
public final static byte U_NONE = 0; | |||
/** | |||
* single (normal) underline | |||
*/ | |||
public final static byte U_SINGLE = 1; | |||
/** | |||
* double underlined | |||
*/ | |||
public final static byte U_DOUBLE = 2; | |||
/** | |||
* accounting style single underline | |||
*/ | |||
public final static byte U_SINGLE_ACCOUNTING = 0x21; | |||
/** | |||
* accounting style double underline | |||
*/ | |||
public final static byte U_DOUBLE_ACCOUNTING = 0x22; | |||
/** | |||
* ANSI character set | |||
*/ | |||
public final static byte ANSI_CHARSET = 0; | |||
/** | |||
* Default character set. | |||
*/ | |||
public final static byte DEFAULT_CHARSET = 1; | |||
/** | |||
* Symbol character set | |||
*/ | |||
public final static byte SYMBOL_CHARSET = 2; | |||
/** | |||
* set the name for the font (i.e. Arial) | |||
* @param name String representing the name of the font to use | |||
* @see #FONT_ARIAL | |||
*/ | |||
void setFontName(String name); | |||
/** | |||
* get the name for the font (i.e. Arial) | |||
* @return String representing the name of the font to use | |||
* @see #FONT_ARIAL | |||
*/ | |||
String getFontName(); | |||
/** | |||
* get the index within the HSSFWorkbook (sequence within the collection of Font objects) | |||
* @return unique index number of the underlying record this Font represents (probably you don't care | |||
* unless you're comparing which one is which) | |||
*/ | |||
short getIndex(); | |||
/** | |||
* set the font height in unit's of 1/20th of a point. Maybe you might want to | |||
* use the setFontHeightInPoints which matches to the familiar 10, 12, 14 etc.. | |||
* @param height height in 1/20ths of a point | |||
* @see #setFontHeightInPoints(short) | |||
*/ | |||
void setFontHeight(short height); | |||
/** | |||
* set the font height | |||
* @param height height in the familiar unit of measure - points | |||
* @see #setFontHeight(short) | |||
*/ | |||
void setFontHeightInPoints(short height); | |||
/** | |||
* get the font height in unit's of 1/20th of a point. Maybe you might want to | |||
* use the getFontHeightInPoints which matches to the familiar 10, 12, 14 etc.. | |||
* @return short - height in 1/20ths of a point | |||
* @see #getFontHeightInPoints() | |||
*/ | |||
short getFontHeight(); | |||
/** | |||
* get the font height | |||
* @return short - height in the familiar unit of measure - points | |||
* @see #getFontHeight() | |||
*/ | |||
short getFontHeightInPoints(); | |||
/** | |||
* set whether to use italics or not | |||
* @param italic italics or not | |||
*/ | |||
void setItalic(boolean italic); | |||
/** | |||
* get whether to use italics or not | |||
* @return italics or not | |||
*/ | |||
boolean getItalic(); | |||
/** | |||
* set whether to use a strikeout horizontal line through the text or not | |||
* @param strikeout or not | |||
*/ | |||
void setStrikeout(boolean strikeout); | |||
/** | |||
* get whether to use a strikeout horizontal line through the text or not | |||
* @return strikeout or not | |||
*/ | |||
boolean getStrikeout(); | |||
/** | |||
* set the color for the font | |||
* @param color to use | |||
* @see #COLOR_NORMAL Note: Use this rather than HSSFColor.AUTOMATIC for default font color | |||
* @see #COLOR_RED | |||
*/ | |||
void setColor(short color); | |||
/** | |||
* get the color for the font | |||
* @return color to use | |||
* @see #COLOR_NORMAL | |||
* @see #COLOR_RED | |||
* @see org.apache.poi.hssf.usermodel.HSSFPalette#getColor(short) | |||
*/ | |||
short getColor(); | |||
/** | |||
* set the boldness to use | |||
* @param boldweight | |||
* @see #BOLDWEIGHT_NORMAL | |||
* @see #BOLDWEIGHT_BOLD | |||
*/ | |||
void setBoldweight(short boldweight); | |||
/** | |||
* get the boldness to use | |||
* @return boldweight | |||
* @see #BOLDWEIGHT_NORMAL | |||
* @see #BOLDWEIGHT_BOLD | |||
*/ | |||
short getBoldweight(); | |||
/** | |||
* set normal,super or subscript. | |||
* @param offset type to use (none,super,sub) | |||
* @see #SS_NONE | |||
* @see #SS_SUPER | |||
* @see #SS_SUB | |||
*/ | |||
void setTypeOffset(short offset); | |||
/** | |||
* get normal,super or subscript. | |||
* @return offset type to use (none,super,sub) | |||
* @see #SS_NONE | |||
* @see #SS_SUPER | |||
* @see #SS_SUB | |||
*/ | |||
short getTypeOffset(); | |||
/** | |||
* set type of text underlining to use | |||
* @param underline type | |||
* @see #U_NONE | |||
* @see #U_SINGLE | |||
* @see #U_DOUBLE | |||
* @see #U_SINGLE_ACCOUNTING | |||
* @see #U_DOUBLE_ACCOUNTING | |||
*/ | |||
void setUnderline(byte underline); | |||
/** | |||
* get type of text underlining to use | |||
* @return underlining type | |||
* @see #U_NONE | |||
* @see #U_SINGLE | |||
* @see #U_DOUBLE | |||
* @see #U_SINGLE_ACCOUNTING | |||
* @see #U_DOUBLE_ACCOUNTING | |||
*/ | |||
byte getUnderline(); | |||
/** | |||
* get character-set to use. | |||
* @return character-set | |||
* @see #ANSI_CHARSET | |||
* @see #DEFAULT_CHARSET | |||
* @see #SYMBOL_CHARSET | |||
*/ | |||
byte getCharSet(); | |||
/** | |||
* set character-set to use. | |||
* @see #ANSI_CHARSET | |||
* @see #DEFAULT_CHARSET | |||
* @see #SYMBOL_CHARSET | |||
*/ | |||
void setCharSet(byte charset); | |||
String toString(); | |||
} |
@@ -0,0 +1,58 @@ | |||
/* ==================================================================== | |||
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 Footer { | |||
/** | |||
* Get the left side of the footer. | |||
* @return The string representing the left side. | |||
*/ | |||
String getLeft(); | |||
/** | |||
* Sets the left string. | |||
* @param newLeft The string to set as the left side. | |||
*/ | |||
void setLeft(String newLeft); | |||
/** | |||
* Get the center of the footer. | |||
* @return The string representing the center. | |||
*/ | |||
String getCenter(); | |||
/** | |||
* Sets the center string. | |||
* @param newCenter The string to set as the center. | |||
*/ | |||
void setCenter(String newCenter); | |||
/** | |||
* Get the right side of the footer. | |||
* @return The string representing the right side. | |||
*/ | |||
String getRight(); | |||
/** | |||
* Sets the right string. | |||
* @param newRight The string to set as the right side. | |||
*/ | |||
void setRight(String newRight); | |||
} |
@@ -0,0 +1,64 @@ | |||
/* ==================================================================== | |||
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 Header { | |||
/** | |||
* Get the left side of the header. | |||
* | |||
* @return The string representing the left side. | |||
*/ | |||
String getLeft(); | |||
/** | |||
* Sets the left string. | |||
* | |||
* @param newLeft The string to set as the left side. | |||
*/ | |||
void setLeft(String newLeft); | |||
/** | |||
* Get the center of the header. | |||
* | |||
* @return The string representing the center. | |||
*/ | |||
String getCenter(); | |||
/** | |||
* Sets the center string. | |||
* | |||
* @param newCenter The string to set as the center. | |||
*/ | |||
void setCenter(String newCenter); | |||
/** | |||
* Get the right side of the header. | |||
* | |||
* @return The string representing the right side. | |||
*/ | |||
String getRight(); | |||
/** | |||
* Sets the right string. | |||
* | |||
* @param newRight The string to set as the right side. | |||
*/ | |||
void setRight(String newRight); | |||
} |
@@ -0,0 +1,56 @@ | |||
/* ==================================================================== | |||
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 Name { | |||
/** Get the sheets name which this named range is referenced to | |||
* @return sheet name, which this named range refered to | |||
*/ | |||
String getSheetName(); | |||
/** | |||
* gets the name of the named range | |||
* @return named range name | |||
*/ | |||
String getNameName(); | |||
/** | |||
* sets the name of the named range | |||
* @param nameName named range name to set | |||
*/ | |||
void setNameName(String nameName); | |||
/** | |||
* gets the reference of the named range | |||
* @return reference of the named range | |||
*/ | |||
String getReference(); | |||
/** | |||
* sets the reference of this named range | |||
* @param ref the reference to set | |||
*/ | |||
void setReference(String ref); | |||
} |
@@ -0,0 +1,75 @@ | |||
/* ==================================================================== | |||
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); | |||
} |
@@ -0,0 +1,124 @@ | |||
/* ==================================================================== | |||
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(); | |||
} |
@@ -0,0 +1,268 @@ | |||
/* ==================================================================== | |||
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 PrintSetup { | |||
public static final short LETTER_PAPERSIZE = 1; | |||
public static final short LEGAL_PAPERSIZE = 5; | |||
public static final short EXECUTIVE_PAPERSIZE = 7; | |||
public static final short A4_PAPERSIZE = 9; | |||
public static final short A5_PAPERSIZE = 11; | |||
public static final short ENVELOPE_10_PAPERSIZE = 20; | |||
public static final short ENVELOPE_DL_PAPERSIZE = 27; | |||
public static final short ENVELOPE_CS_PAPERSIZE = 28; | |||
public static final short ENVELOPE_MONARCH_PAPERSIZE = 37; | |||
/** | |||
* Set the paper size. | |||
* @param size the paper size. | |||
*/ | |||
void setPaperSize(short size); | |||
/** | |||
* Set the scale. | |||
* @param scale the scale to use | |||
*/ | |||
void setScale(short scale); | |||
/** | |||
* Set the page numbering start. | |||
* @param start the page numbering start | |||
*/ | |||
void setPageStart(short start); | |||
/** | |||
* Set the number of pages wide to fit the sheet in | |||
* @param width the number of pages | |||
*/ | |||
void setFitWidth(short width); | |||
/** | |||
* Set the number of pages high to fit the sheet in | |||
* @param height the number of pages | |||
*/ | |||
void setFitHeight(short height); | |||
/** | |||
* Sets the options flags. Not advisable to do it directly. | |||
* @param options The bit flags for the options | |||
*/ | |||
void setOptions(short options); | |||
/** | |||
* Set whether to go left to right or top down in ordering | |||
* @param ltor left to right | |||
*/ | |||
void setLeftToRight(boolean ltor); | |||
/** | |||
* Set whether to print in landscape | |||
* @param ls landscape | |||
*/ | |||
void setLandscape(boolean ls); | |||
/** | |||
* Valid settings. I'm not for sure. | |||
* @param valid Valid | |||
*/ | |||
void setValidSettings(boolean valid); | |||
/** | |||
* Set whether it is black and white | |||
* @param mono Black and white | |||
*/ | |||
void setNoColor(boolean mono); | |||
/** | |||
* Set whether it is in draft mode | |||
* @param d draft | |||
*/ | |||
void setDraft(boolean d); | |||
/** | |||
* Print the include notes | |||
* @param printnotes print the notes | |||
*/ | |||
void setNotes(boolean printnotes); | |||
/** | |||
* Set no orientation. ? | |||
* @param orientation Orientation. | |||
*/ | |||
void setNoOrientation(boolean orientation); | |||
/** | |||
* Set whether to use page start | |||
* @param page Use page start | |||
*/ | |||
void setUsePage(boolean page); | |||
/** | |||
* Sets the horizontal resolution. | |||
* @param resolution horizontal resolution | |||
*/ | |||
void setHResolution(short resolution); | |||
/** | |||
* Sets the vertical resolution. | |||
* @param resolution vertical resolution | |||
*/ | |||
void setVResolution(short resolution); | |||
/** | |||
* Sets the header margin. | |||
* @param headermargin header margin | |||
*/ | |||
void setHeaderMargin(double headermargin); | |||
/** | |||
* Sets the footer margin. | |||
* @param footermargin footer margin | |||
*/ | |||
void setFooterMargin(double footermargin); | |||
/** | |||
* Sets the number of copies. | |||
* @param copies number of copies | |||
*/ | |||
void setCopies(short copies); | |||
/** | |||
* Returns the paper size. | |||
* @return paper size | |||
*/ | |||
short getPaperSize(); | |||
/** | |||
* Returns the scale. | |||
* @return scale | |||
*/ | |||
short getScale(); | |||
/** | |||
* Returns the page start. | |||
* @return page start | |||
*/ | |||
short getPageStart(); | |||
/** | |||
* Returns the number of pages wide to fit sheet in. | |||
* @return number of pages wide to fit sheet in | |||
*/ | |||
short getFitWidth(); | |||
/** | |||
* Returns the number of pages high to fit the sheet in. | |||
* @return number of pages high to fit the sheet in | |||
*/ | |||
short getFitHeight(); | |||
/** | |||
* Returns the bit flags for the options. | |||
* @return bit flags for the options | |||
*/ | |||
short getOptions(); | |||
/** | |||
* Returns the left to right print order. | |||
* @return left to right print order | |||
*/ | |||
boolean getLeftToRight(); | |||
/** | |||
* Returns the landscape mode. | |||
* @return landscape mode | |||
*/ | |||
boolean getLandscape(); | |||
/** | |||
* Returns the valid settings. | |||
* @return valid settings | |||
*/ | |||
boolean getValidSettings(); | |||
/** | |||
* Returns the black and white setting. | |||
* @return black and white setting | |||
*/ | |||
boolean getNoColor(); | |||
/** | |||
* Returns the draft mode. | |||
* @return draft mode | |||
*/ | |||
boolean getDraft(); | |||
/** | |||
* Returns the print notes. | |||
* @return print notes | |||
*/ | |||
boolean getNotes(); | |||
/** | |||
* Returns the no orientation. | |||
* @return no orientation | |||
*/ | |||
boolean getNoOrientation(); | |||
/** | |||
* Returns the use page numbers. | |||
* @return use page numbers | |||
*/ | |||
boolean getUsePage(); | |||
/** | |||
* Returns the horizontal resolution. | |||
* @return horizontal resolution | |||
*/ | |||
short getHResolution(); | |||
/** | |||
* Returns the vertical resolution. | |||
* @return vertical resolution | |||
*/ | |||
short getVResolution(); | |||
/** | |||
* Returns the header margin. | |||
* @return header margin | |||
*/ | |||
double getHeaderMargin(); | |||
/** | |||
* Returns the footer margin. | |||
* @return footer margin | |||
*/ | |||
double getFooterMargin(); | |||
/** | |||
* Returns the number of copies. | |||
* @return number of copies | |||
*/ | |||
short getCopies(); | |||
} |
@@ -0,0 +1,117 @@ | |||
/* ==================================================================== | |||
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 RichTextString { | |||
/** Place holder for indicating that NO_FONT has been applied here */ | |||
public static final short NO_FONT = 0; | |||
/** | |||
* Applies a font to the specified characters of a string. | |||
* | |||
* @param startIndex The start index to apply the font to (inclusive) | |||
* @param endIndex The end index to apply the font to (exclusive) | |||
* @param fontIndex The font to use. | |||
*/ | |||
void applyFont(int startIndex, int endIndex, short fontIndex); | |||
/** | |||
* Applies a font to the specified characters of a string. | |||
* | |||
* @param startIndex The start index to apply the font to (inclusive) | |||
* @param endIndex The end index to apply to font to (exclusive) | |||
* @param font The index of the font to use. | |||
*/ | |||
void applyFont(int startIndex, int endIndex, Font font); | |||
/** | |||
* Sets the font of the entire string. | |||
* @param font The font to use. | |||
*/ | |||
void applyFont(Font font); | |||
/** | |||
* Removes any formatting that may have been applied to the string. | |||
*/ | |||
void clearFormatting(); | |||
/** | |||
* Returns the plain string representation. | |||
*/ | |||
String getString(); | |||
/** | |||
* @return the number of characters in the font. | |||
*/ | |||
int length(); | |||
/** | |||
* Returns the font in use at a particular index. | |||
* | |||
* @param index The index. | |||
* @return The font that's currently being applied at that | |||
* index or null if no font is being applied or the | |||
* index is out of range. | |||
*/ | |||
short getFontAtIndex(int index); | |||
/** | |||
* @return The number of formatting runs used. There will always be at | |||
* least one of font NO_FONT. | |||
* | |||
* @see #NO_FONT | |||
*/ | |||
int numFormattingRuns(); | |||
/** | |||
* The index within the string to which the specified formatting run applies. | |||
* @param index the index of the formatting run | |||
* @return the index within the string. | |||
*/ | |||
int getIndexOfFormattingRun(int index); | |||
/** | |||
* Gets the font used in a particular formatting run. | |||
* | |||
* @param index the index of the formatting run | |||
* @return the font number used. | |||
*/ | |||
short getFontOfFormattingRun(int index); | |||
/** | |||
* Compares one rich text string to another. | |||
*/ | |||
int compareTo(Object o); | |||
boolean equals(Object o); | |||
/** | |||
* @return the plain text representation of this string. | |||
*/ | |||
String toString(); | |||
/** | |||
* Applies the specified font to the entire string. | |||
* | |||
* @param fontIndex the font to apply. | |||
*/ | |||
void applyFont(short fontIndex); | |||
} |
@@ -0,0 +1,158 @@ | |||
/* ==================================================================== | |||
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.Iterator; | |||
public interface Row { | |||
// used for collections | |||
public final static int INITIAL_CAPACITY = 5; | |||
/** | |||
* Use this to create new cells within the row and return it. | |||
* <p> | |||
* The cell that is returned is a CELL_TYPE_BLANK. The type can be changed | |||
* either through calling <code>setCellValue</code> or <code>setCellType</code>. | |||
* | |||
* @param column - the column number this cell represents | |||
* | |||
* @return HSSFCell a high level representation of the created cell. | |||
*/ | |||
Cell createCell(short column); | |||
/** | |||
* Use this to create new cells within the row and return it. | |||
* <p> | |||
* The cell that is returned is a CELL_TYPE_BLANK. The type can be changed | |||
* either through calling setCellValue or setCellType. | |||
* | |||
* @param column - the column number this cell represents | |||
* | |||
* @return HSSFCell a high level representation of the created cell. | |||
*/ | |||
Cell createCell(short column, int type); | |||
/** | |||
* remove the HSSFCell from this row. | |||
* @param cell to remove | |||
*/ | |||
void removeCell(Cell cell); | |||
/** | |||
* set the row number of this row. | |||
* @param rowNum the row number (0-based) | |||
* @throws IndexOutOfBoundsException if the row number is not within the range 0-65535. | |||
*/ | |||
void setRowNum(int rowNum); | |||
/** | |||
* get row number this row represents | |||
* @return the row number (0 based) | |||
*/ | |||
int getRowNum(); | |||
/** | |||
* get the hssfcell representing a given column (logical cell) 0-based. If you | |||
* ask for a cell that is not defined....you get a null. | |||
* | |||
* @param cellnum 0 based column number | |||
* @return HSSFCell representing that column or null if undefined. | |||
*/ | |||
Cell getCell(short cellnum); | |||
/** | |||
* get the number of the first cell contained in this row. | |||
* @return short representing the first logical cell in the row, or -1 if the row does not contain any cells. | |||
*/ | |||
short getFirstCellNum(); | |||
/** | |||
* gets the number of the last cell contained in this row <b>PLUS ONE</b>. | |||
* @return short representing the last logical cell in the row <b>PLUS ONE</b>, or -1 if the row does not contain any cells. | |||
*/ | |||
short getLastCellNum(); | |||
/** | |||
* gets the number of defined cells (NOT number of cells in the actual row!). | |||
* That is to say if only columns 0,4,5 have values then there would be 3. | |||
* @return int representing the number of defined cells in the row. | |||
*/ | |||
int getPhysicalNumberOfCells(); | |||
/** | |||
* set the row's height or set to ff (-1) for undefined/default-height. Set the height in "twips" or | |||
* 1/20th of a point. | |||
* @param height rowheight or 0xff for undefined (use sheet default) | |||
*/ | |||
void setHeight(short height); | |||
/** | |||
* set whether or not to display this row with 0 height | |||
* @param zHeight height is zero or not. | |||
*/ | |||
void setZeroHeight(boolean zHeight); | |||
/** | |||
* get whether or not to display this row with 0 height | |||
* @return - zHeight height is zero or not. | |||
*/ | |||
boolean getZeroHeight(); | |||
/** | |||
* set the row's height in points. | |||
* @param height row height in points | |||
*/ | |||
void setHeightInPoints(float height); | |||
/** | |||
* get the row's height or ff (-1) for undefined/default-height in twips (1/20th of a point) | |||
* @return rowheight or 0xff for undefined (use sheet default) | |||
*/ | |||
short getHeight(); | |||
/** | |||
* get the row's height or ff (-1) for undefined/default-height in points (20*getHeight()) | |||
* @return rowheight or 0xff for undefined (use sheet default) | |||
*/ | |||
float getHeightInPoints(); | |||
/** | |||
* @return cell iterator of the physically defined cells. Note element 4 may | |||
* actually be row cell depending on how many are defined! | |||
*/ | |||
Iterator cellIterator(); | |||
int compareTo(Object obj); | |||
boolean equals(Object obj); | |||
} |
@@ -0,0 +1,40 @@ | |||
/* ==================================================================== | |||
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 shared strings | |||
*/ | |||
public interface SharedStringSource { | |||
/** | |||
* Return the string at position <code>idx</idx> (0-based) in this source. | |||
* | |||
* @param idx String position. | |||
* @return The string, or null if not found. | |||
*/ | |||
public String getSharedStringAt(int idx); | |||
/** | |||
* Store a string in this source. | |||
* | |||
* @param s The string to store. | |||
* @return The 0-based position of the newly added string. | |||
*/ | |||
public int putSharedString(String s); | |||
} |
@@ -0,0 +1,727 @@ | |||
/* ==================================================================== | |||
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.Iterator; | |||
/* ==================================================================== | |||
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.poi.hssf.util.PaneInformation; | |||
import org.apache.poi.hssf.util.Region; | |||
public interface Sheet { | |||
/* Constants for margins */ | |||
public static final short LeftMargin = Sheet.LeftMargin; | |||
public static final short RightMargin = Sheet.RightMargin; | |||
public static final short TopMargin = Sheet.TopMargin; | |||
public static final short BottomMargin = Sheet.BottomMargin; | |||
public static final byte PANE_LOWER_RIGHT = (byte) 0; | |||
public static final byte PANE_UPPER_RIGHT = (byte) 1; | |||
public static final byte PANE_LOWER_LEFT = (byte) 2; | |||
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 | |||
* @see #removeRow(HSSFRow) | |||
*/ | |||
Row createRow(int rownum); | |||
/** | |||
* Remove a row from this sheet. All cells contained in the row are removed as well | |||
* | |||
* @param row representing a row to remove. | |||
*/ | |||
void removeRow(Row 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 | |||
*/ | |||
Row getRow(int rownum); | |||
/** | |||
* Returns the number of phsyically defined rows (NOT the number of rows in the sheet) | |||
*/ | |||
int getPhysicalNumberOfRows(); | |||
/** | |||
* gets the first row on the sheet | |||
* @return the number of the first logical row on the sheet | |||
*/ | |||
int getFirstRowNum(); | |||
/** | |||
* gets the last row on the sheet | |||
* @return last row contained n this sheet. | |||
*/ | |||
int getLastRowNum(); | |||
/** | |||
* Get the visibility state for a given column. | |||
* @param column - the column to get (0-based) | |||
* @param hidden - the visiblity state of the column | |||
*/ | |||
void setColumnHidden(short column, boolean hidden); | |||
/** | |||
* Get the hidden state for a given column. | |||
* @param column - the column to set (0-based) | |||
* @return hidden - the visiblity state of the column | |||
*/ | |||
boolean isColumnHidden(short column); | |||
/** | |||
* set the width (in units of 1/256th of a character width) | |||
* @param column - the column to set (0-based) | |||
* @param width - the width in units of 1/256th of a character width | |||
*/ | |||
void setColumnWidth(short column, short width); | |||
/** | |||
* get the width (in units of 1/256th of a character width ) | |||
* @param column - the column to set (0-based) | |||
* @return width - the width in units of 1/256th of a character width | |||
*/ | |||
short getColumnWidth(short column); | |||
/** | |||
* get the default column width for the sheet (if the columns do not define their own width) in | |||
* characters | |||
* @return default column width | |||
*/ | |||
short getDefaultColumnWidth(); | |||
/** | |||
* get the default row height for the sheet (if the rows do not define their own height) in | |||
* twips (1/20 of a point) | |||
* @return default row height | |||
*/ | |||
short getDefaultRowHeight(); | |||
/** | |||
* get the default row height for the sheet (if the rows do not define their own height) in | |||
* points. | |||
* @return default row height in points | |||
*/ | |||
float getDefaultRowHeightInPoints(); | |||
/** | |||
* set the default column width for the sheet (if the columns do not define their own width) in | |||
* characters | |||
* @param width default column width | |||
*/ | |||
void setDefaultColumnWidth(short width); | |||
/** | |||
* set the default row height for the sheet (if the rows do not define their own height) in | |||
* twips (1/20 of a point) | |||
* @param height default row height | |||
*/ | |||
void setDefaultRowHeight(short height); | |||
/** | |||
* set the default row height for the sheet (if the rows do not define their own height) in | |||
* points | |||
* @param height default row height | |||
*/ | |||
void setDefaultRowHeightInPoints(float height); | |||
/** | |||
* get whether gridlines are printed. | |||
* @return true if printed | |||
*/ | |||
boolean isGridsPrinted(); | |||
/** | |||
* set whether gridlines printed. | |||
* @param value false if not printed. | |||
*/ | |||
void setGridsPrinted(boolean value); | |||
/** | |||
* adds a merged region of cells (hence those cells form one) | |||
* @param region (rowfrom/colfrom-rowto/colto) to merge | |||
* @return index of this region | |||
*/ | |||
int addMergedRegion(Region region); | |||
/** | |||
* determines whether the output is vertically centered on the page. | |||
* @param value true to vertically center, false otherwise. | |||
*/ | |||
void setVerticallyCenter(boolean value); | |||
/** | |||
* Determine whether printed output for this sheet will be vertically centered. | |||
*/ | |||
boolean getVerticallyCenter(boolean value); | |||
/** | |||
* determines whether the output is horizontally centered on the page. | |||
* @param value true to horizontally center, false otherwise. | |||
*/ | |||
void setHorizontallyCenter(boolean value); | |||
/** | |||
* Determine whether printed output for this sheet will be horizontally centered. | |||
*/ | |||
boolean getHorizontallyCenter(); | |||
/** | |||
* removes a merged region of cells (hence letting them free) | |||
* @param index of the region to unmerge | |||
*/ | |||
void removeMergedRegion(int index); | |||
/** | |||
* returns the number of merged regions | |||
* @return number of merged regions | |||
*/ | |||
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. | |||
*/ | |||
Iterator rowIterator(); | |||
/** | |||
* whether alternate expression evaluation is on | |||
* @param b alternative expression evaluation or not | |||
*/ | |||
void setAlternativeExpression(boolean b); | |||
/** | |||
* whether alternative formula entry is on | |||
* @param b alternative formulas or not | |||
*/ | |||
void setAlternativeFormula(boolean b); | |||
/** | |||
* show automatic page breaks or not | |||
* @param b whether to show auto page breaks | |||
*/ | |||
void setAutobreaks(boolean b); | |||
/** | |||
* set whether sheet is a dialog sheet or not | |||
* @param b isDialog or not | |||
*/ | |||
void setDialog(boolean b); | |||
/** | |||
* set whether to display the guts or not | |||
* | |||
* @param b guts or no guts (or glory) | |||
*/ | |||
void setDisplayGuts(boolean b); | |||
/** | |||
* fit to page option is on | |||
* @param b fit or not | |||
*/ | |||
void setFitToPage(boolean b); | |||
/** | |||
* set if row summaries appear below detail in the outline | |||
* @param b below or not | |||
*/ | |||
void setRowSumsBelow(boolean b); | |||
/** | |||
* set if col summaries appear right of the detail in the outline | |||
* @param b right or not | |||
*/ | |||
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 | |||
*/ | |||
boolean getAutobreaks(); | |||
/** | |||
* get whether sheet is a dialog sheet or not | |||
* @return isDialog or not | |||
*/ | |||
boolean getDialog(); | |||
/** | |||
* get whether to display the guts or not | |||
* | |||
* @return guts or no guts (or glory) | |||
*/ | |||
boolean getDisplayGuts(); | |||
/** | |||
* fit to page option is on | |||
* @return fit or not | |||
*/ | |||
boolean getFitToPage(); | |||
/** | |||
* get if row summaries appear below detail in the outline | |||
* @return below or not | |||
*/ | |||
boolean getRowSumsBelow(); | |||
/** | |||
* get if col summaries appear right of the detail in the outline | |||
* @return right or not | |||
*/ | |||
boolean getRowSumsRight(); | |||
/** | |||
* Returns whether gridlines are printed. | |||
* @return Gridlines are printed | |||
*/ | |||
boolean isPrintGridlines(); | |||
/** | |||
* Turns on or off the printing of gridlines. | |||
* @param newPrintGridlines boolean to turn on or off the printing of | |||
* gridlines | |||
*/ | |||
void setPrintGridlines(boolean newPrintGridlines); | |||
/** | |||
* Gets the print setup object. | |||
* @return The user model for the print setup object. | |||
*/ | |||
PrintSetup getPrintSetup(); | |||
/** | |||
* Gets the user model for the document header. | |||
* @return The Document header. | |||
*/ | |||
Header getHeader(); | |||
/** | |||
* Gets the user model for the document footer. | |||
* @return The Document footer. | |||
*/ | |||
Footer getFooter(); | |||
/** | |||
* Sets whether sheet is selected. | |||
* @param sel Whether to select the sheet or deselect the sheet. | |||
*/ | |||
void setSelected(boolean sel); | |||
/** | |||
* Gets the size of the margin in inches. | |||
* @param margin which margin to get | |||
* @return the size of the margin | |||
*/ | |||
double getMargin(short margin); | |||
/** | |||
* Sets the size of the margin in inches. | |||
* @param margin which margin to get | |||
* @param size the size of the margin | |||
*/ | |||
void setMargin(short margin, double size); | |||
/** | |||
* Answer whether protection is enabled or disabled | |||
* @return true => protection enabled; false => protection disabled | |||
*/ | |||
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 on enabled or disabled | |||
* @param protect true => protection enabled; false => protection disabled | |||
* @deprecated use protectSheet(String, boolean, boolean) | |||
*/ | |||
void setProtect(boolean protect); | |||
/** | |||
* 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. | |||
* | |||
* @param numerator The numerator for the zoom magnification. | |||
* @param denominator The denominator for the zoom magnification. | |||
*/ | |||
void setZoom(int numerator, int denominator); | |||
/** | |||
* The top row in the visible view when the sheet is | |||
* first viewed after opening it in a viewer | |||
* @return short indicating the rownum (0 based) of the top row | |||
*/ | |||
short getTopRow(); | |||
/** | |||
* The left col in the visible view when the sheet is | |||
* first viewed after opening it in a viewer | |||
* @return short indicating the rownum (0 based) of the top row | |||
*/ | |||
short getLeftCol(); | |||
/** | |||
* Sets desktop window pane display area, when the | |||
* file is first opened in a viewer. | |||
* @param toprow the top row to show in desktop window pane | |||
* @param leftcol the left column to show in desktop window pane | |||
*/ | |||
void showInPane(short toprow, short leftcol); | |||
/** | |||
* Shifts rows between startRow and endRow n number of rows. | |||
* If you use a negative number, it will shift rows up. | |||
* Code ensures that rows don't wrap around. | |||
* | |||
* Calls shiftRows(startRow, endRow, n, false, false); | |||
* | |||
* <p> | |||
* Additionally shifts merged regions that are completely defined in these | |||
* rows (ie. merged 2 cells on a row to be shifted). | |||
* @param startRow the row to start shifting | |||
* @param endRow the row to end shifting | |||
* @param n the number of rows to shift | |||
*/ | |||
void shiftRows(int startRow, int endRow, int n); | |||
/** | |||
* Shifts rows between startRow and endRow n number of rows. | |||
* If you use a negative number, it will shift rows up. | |||
* Code ensures that rows don't wrap around | |||
* | |||
* <p> | |||
* Additionally shifts merged regions that are completely defined in these | |||
* rows (ie. merged 2 cells on a row to be shifted). | |||
* <p> | |||
* TODO Might want to add bounds checking here | |||
* @param startRow the row to start shifting | |||
* @param endRow the row to end shifting | |||
* @param n the number of rows to shift | |||
* @param copyRowHeight whether to copy the row height during the shift | |||
* @param resetOriginalRowHeight whether to set the original row's height to the default | |||
*/ | |||
void shiftRows(int startRow, int endRow, int n, boolean copyRowHeight, boolean resetOriginalRowHeight); | |||
/** | |||
* Creates a split (freezepane). Any existing freezepane or split pane is overwritten. | |||
* @param colSplit Horizonatal position of split. | |||
* @param rowSplit Vertical position of split. | |||
* @param topRow Top row visible in bottom pane | |||
* @param leftmostColumn Left column visible in right pane. | |||
*/ | |||
void createFreezePane(int colSplit, int rowSplit, int leftmostColumn, int topRow); | |||
/** | |||
* Creates a split (freezepane). Any existing freezepane or split pane is overwritten. | |||
* @param colSplit Horizonatal position of split. | |||
* @param rowSplit Vertical position of split. | |||
*/ | |||
void createFreezePane(int colSplit, int rowSplit); | |||
/** | |||
* Creates a split pane. Any existing freezepane or split pane is overwritten. | |||
* @param xSplitPos Horizonatal position of split (in 1/20th of a point). | |||
* @param ySplitPos Vertical position of split (in 1/20th of a point). | |||
* @param topRow Top row visible in bottom pane | |||
* @param leftmostColumn Left column visible in right pane. | |||
* @param activePane Active pane. One of: PANE_LOWER_RIGHT, | |||
* PANE_UPPER_RIGHT, PANE_LOWER_LEFT, PANE_UPPER_LEFT | |||
* @see #PANE_LOWER_LEFT | |||
* @see #PANE_LOWER_RIGHT | |||
* @see #PANE_UPPER_LEFT | |||
* @see #PANE_UPPER_RIGHT | |||
*/ | |||
void createSplitPane(int xSplitPos, int ySplitPos, int leftmostColumn, int topRow, int activePane); | |||
/** | |||
* Returns the information regarding the currently configured pane (split or freeze). | |||
* @return null if no pane configured, or the pane information. | |||
*/ | |||
PaneInformation getPaneInformation(); | |||
/** | |||
* Sets whether the gridlines are shown in a viewer. | |||
* @param show whether to show gridlines or not | |||
*/ | |||
void setDisplayGridlines(boolean show); | |||
/** | |||
* Returns if gridlines are displayed. | |||
* @return whether gridlines are displayed | |||
*/ | |||
boolean isDisplayGridlines(); | |||
/** | |||
* Sets whether the formulas are shown in a viewer. | |||
* @param show whether to show formulas or not | |||
*/ | |||
void setDisplayFormulas(boolean show); | |||
/** | |||
* Returns if formulas are displayed. | |||
* @return whether formulas are displayed | |||
*/ | |||
boolean isDisplayFormulas(); | |||
/** | |||
* Sets whether the RowColHeadings are shown in a viewer. | |||
* @param show whether to show RowColHeadings or not | |||
*/ | |||
void setDisplayRowColHeadings(boolean show); | |||
/** | |||
* Returns if RowColHeadings are displayed. | |||
* @return whether RowColHeadings are displayed | |||
*/ | |||
boolean isDisplayRowColHeadings(); | |||
/** | |||
* Sets a page break at the indicated row | |||
* @param row FIXME: Document this! | |||
*/ | |||
void setRowBreak(int row); | |||
/** | |||
* Determines if there is a page break at the indicated row | |||
* @param row FIXME: Document this! | |||
* @return FIXME: Document this! | |||
*/ | |||
boolean isRowBroken(int row); | |||
/** | |||
* Removes the page break at the indicated row | |||
* @param row | |||
*/ | |||
void removeRowBreak(int row); | |||
/** | |||
* Retrieves all the horizontal page breaks | |||
* @return all the horizontal page breaks, or null if there are no row page breaks | |||
*/ | |||
int[] getRowBreaks(); | |||
/** | |||
* Retrieves all the vertical page breaks | |||
* @return all the vertical page breaks, or null if there are no column page breaks | |||
*/ | |||
short[] getColumnBreaks(); | |||
/** | |||
* Sets a page break at the indicated column | |||
* @param column | |||
*/ | |||
void setColumnBreak(short column); | |||
/** | |||
* Determines if there is a page break at the indicated column | |||
* @param column FIXME: Document this! | |||
* @return FIXME: Document this! | |||
*/ | |||
boolean isColumnBroken(short column); | |||
/** | |||
* Removes a page break at the indicated column | |||
* @param column | |||
*/ | |||
void removeColumnBreak(short column); | |||
/** | |||
* Aggregates the drawing records and dumps the escher record hierarchy | |||
* to the standard output. | |||
*/ | |||
void dumpDrawingRecords(boolean fat); | |||
/** | |||
* Creates the toplevel drawing patriarch. This will have the effect of | |||
* removing any existing drawings on this sheet. | |||
* | |||
* @return The new patriarch. | |||
*/ | |||
Patriarch createDrawingPatriarch(); | |||
/** | |||
* Expands or collapses a column group. | |||
* | |||
* @param columnNumber One of the columns in the group. | |||
* @param collapsed true = collapse group, false = expand group. | |||
*/ | |||
void setColumnGroupCollapsed(short columnNumber, boolean collapsed); | |||
/** | |||
* Create an outline for the provided column range. | |||
* | |||
* @param fromColumn beginning of the column range. | |||
* @param toColumn end of the column range. | |||
*/ | |||
void groupColumn(short fromColumn, short toColumn); | |||
void ungroupColumn(short fromColumn, short toColumn); | |||
void groupRow(int fromRow, int toRow); | |||
void ungroupRow(int fromRow, int toRow); | |||
void setRowGroupCollapsed(int row, boolean collapse); | |||
/** | |||
* Sets the default column style for a given column. POI will only apply this style to new cells added to the sheet. | |||
* | |||
* @param column the column index | |||
* @param style the style to set | |||
*/ | |||
void setDefaultColumnStyle(short column, CellStyle style); | |||
/** | |||
* Adjusts the column width to fit the contents. | |||
* | |||
* 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. | |||
* | |||
* @param column the column index | |||
*/ | |||
void autoSizeColumn(short column); | |||
/** | |||
* Returns cell comment for the specified row and column | |||
* | |||
* @return cell comment or <code>null</code> if not found | |||
*/ | |||
Comment getCellComment(int row, int column); | |||
} |
@@ -0,0 +1,74 @@ | |||
/* ==================================================================== | |||
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 Textbox { | |||
public final static short OBJECT_TYPE_TEXT = 6; | |||
/** | |||
* @return the rich text string for this textbox. | |||
*/ | |||
RichTextString getString(); | |||
/** | |||
* @param string Sets the rich text string used by this object. | |||
*/ | |||
void setString(RichTextString string); | |||
/** | |||
* @return Returns the left margin within the textbox. | |||
*/ | |||
int getMarginLeft(); | |||
/** | |||
* Sets the left margin within the textbox. | |||
*/ | |||
void setMarginLeft(int marginLeft); | |||
/** | |||
* @return returns the right margin within the textbox. | |||
*/ | |||
int getMarginRight(); | |||
/** | |||
* Sets the right margin within the textbox. | |||
*/ | |||
void setMarginRight(int marginRight); | |||
/** | |||
* @return returns the top margin within the textbox. | |||
*/ | |||
int getMarginTop(); | |||
/** | |||
* Sets the top margin within the textbox. | |||
*/ | |||
void setMarginTop(int marginTop); | |||
/** | |||
* Gets the bottom margin within the textbox. | |||
*/ | |||
int getMarginBottom(); | |||
/** | |||
* Sets the bottom margin within the textbox. | |||
*/ | |||
void setMarginBottom(int marginBottom); | |||
} |
@@ -0,0 +1,458 @@ | |||
/* ==================================================================== | |||
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.io.IOException; | |||
import java.io.OutputStream; | |||
import java.util.List; | |||
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; | |||
/** Windows Meta File */ | |||
public static final int PICTURE_TYPE_WMF = 3; | |||
/** Mac PICT format */ | |||
public static final int PICTURE_TYPE_PICT = 4; | |||
/** JPEG format */ | |||
public static final int PICTURE_TYPE_JPEG = 5; | |||
/** PNG format */ | |||
public static final int PICTURE_TYPE_PNG = 6; | |||
/** Device independant bitmap */ | |||
public static final int PICTURE_TYPE_DIB = 7; | |||
/** | |||
* sets the order of appearance for a given sheet. | |||
* | |||
* @param sheetname the name of the sheet to reorder | |||
* @param pos the position that we want to insert the sheet into (0 based) | |||
*/ | |||
void setSheetOrder(String sheetname, int pos); | |||
/** | |||
* sets 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) | |||
* @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(); | |||
/** | |||
* sets the first tab that is displayed in the list of tabs | |||
* in excel. | |||
* @param index | |||
*/ | |||
void setDisplayedTab(short index); | |||
/** | |||
* sets the first tab that is displayed in the list of tabs | |||
* in excel. | |||
*/ | |||
short getDisplayedTab(); | |||
/** | |||
* @deprecated POI will now properly handle unicode strings without | |||
* forceing an encoding | |||
*/ | |||
public final static byte ENCODING_COMPRESSED_UNICODE = 0; | |||
/** | |||
* @deprecated POI will now properly handle unicode strings without | |||
* forceing an encoding | |||
*/ | |||
public final static byte ENCODING_UTF_16 = 1; | |||
/** | |||
* set the sheet name. | |||
* Will throw IllegalArgumentException if the name is greater than 31 chars | |||
* or contains /\?*[] | |||
* @param sheet number (0 based) | |||
*/ | |||
void setSheetName(int sheet, String name); | |||
/** | |||
* set the sheet name forcing the encoding. Forcing the encoding IS A BAD IDEA!!! | |||
* @deprecated 3-Jan-2006 POI now automatically detects unicode and sets the encoding | |||
* appropriately. Simply use setSheetName(int sheet, String encoding) | |||
* @throws IllegalArgumentException if the name is greater than 31 chars | |||
* or contains /\?*[] | |||
* @param sheet number (0 based) | |||
*/ | |||
void setSheetName(int sheet, String name, short encoding); | |||
/** | |||
* get the sheet name | |||
* @param sheet Number | |||
* @return Sheet name | |||
*/ | |||
String getSheetName(int sheet); | |||
/** Returns the index of the sheet by his name | |||
* @param name the sheet name | |||
* @return index of the sheet (0 based) | |||
*/ | |||
int getSheetIndex(String name); | |||
/** Returns the index of the given sheet | |||
* @param sheet the sheet to look up | |||
* @return index of the sheet (0 based) | |||
*/ | |||
int getSheetIndex(Sheet sheet); | |||
/** | |||
* create an HSSFSheet for this HSSFWorkbook, adds it to the sheets and returns | |||
* the high level representation. Use this to create new sheets. | |||
* | |||
* @return HSSFSheet representing the new sheet. | |||
*/ | |||
Sheet createSheet(); | |||
/** | |||
* create an HSSFSheet from an existing sheet in the HSSFWorkbook. | |||
* | |||
* @return HSSFSheet representing the cloned sheet. | |||
*/ | |||
Sheet cloneSheet(int sheetNum); | |||
/** | |||
* create an HSSFSheet for this HSSFWorkbook, 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. | |||
*/ | |||
Sheet createSheet(String sheetname); | |||
/** | |||
* get the number of spreadsheets in the workbook (this will be three after serialization) | |||
* @return number of sheets | |||
*/ | |||
int getNumberOfSheets(); | |||
/** | |||
* Get the HSSFSheet object at the given index. | |||
* @param index of the sheet number (0-based physical & logical) | |||
* @return HSSFSheet at the provided index | |||
*/ | |||
Sheet getSheetAt(int index); | |||
/** | |||
* Get sheet with the given name | |||
* @param name of the sheet | |||
* @return HSSFSheet with the name provided or null if it does not exist | |||
*/ | |||
Sheet getSheet(String name); | |||
/** | |||
* removes sheet at the given index | |||
* @param index of the sheet (0-based) | |||
*/ | |||
void removeSheetAt(int index); | |||
/** | |||
* determine whether the Excel GUI will backup the workbook when saving. | |||
* | |||
* @param backupValue true to indicate a backup will be performed. | |||
*/ | |||
void setBackupFlag(boolean backupValue); | |||
/** | |||
* determine whether the Excel GUI will backup the workbook when saving. | |||
* | |||
* @return the current setting for backups. | |||
*/ | |||
boolean getBackupFlag(); | |||
/** | |||
* Sets the repeating rows and columns for a sheet (as found in | |||
* File->PageSetup->Sheet). This is function is included in the workbook | |||
* because it creates/modifies name records which are stored at the | |||
* workbook level. | |||
* <p> | |||
* To set just repeating columns: | |||
* <pre> | |||
* workbook.setRepeatingRowsAndColumns(0,0,1,-1-1); | |||
* </pre> | |||
* To set just repeating rows: | |||
* <pre> | |||
* workbook.setRepeatingRowsAndColumns(0,-1,-1,0,4); | |||
* </pre> | |||
* To remove all repeating rows and columns for a sheet. | |||
* <pre> | |||
* workbook.setRepeatingRowsAndColumns(0,-1,-1,-1,-1); | |||
* </pre> | |||
* | |||
* @param sheetIndex 0 based index to sheet. | |||
* @param startColumn 0 based start of repeating columns. | |||
* @param endColumn 0 based end of repeating columns. | |||
* @param startRow 0 based start of repeating rows. | |||
* @param endRow 0 based end of repeating rows. | |||
*/ | |||
void setRepeatingRowsAndColumns(int sheetIndex, int startColumn, int endColumn, int startRow, int endRow); | |||
/** | |||
* create a new Font and add it to the workbook's font table | |||
* @return new font object | |||
*/ | |||
Font createFont(); | |||
/** | |||
* Finds a font that matches the one with the supplied attributes | |||
*/ | |||
Font findFont(short boldWeight, short color, short fontHeight, String name, boolean italic, boolean strikeout, short typeOffset, byte underline); | |||
/** | |||
* get the number of fonts in the font table | |||
* @return number of fonts | |||
*/ | |||
short getNumberOfFonts(); | |||
/** | |||
* get the font at the given index number | |||
* @param idx index number | |||
* @return HSSFFont at the index | |||
*/ | |||
Font getFontAt(short idx); | |||
/** | |||
* create a new Cell style and add it to the workbook's style table | |||
* @return the new Cell Style object | |||
*/ | |||
CellStyle createCellStyle(); | |||
/** | |||
* get the number of styles the workbook contains | |||
* @return count of cell styles | |||
*/ | |||
short getNumCellStyles(); | |||
/** | |||
* get the cell style object at the given index | |||
* @param idx index within the set of styles | |||
* @return HSSFCellStyle object at the index | |||
*/ | |||
CellStyle getCellStyleAt(short idx); | |||
/** | |||
* Method write - write out this workbook to an Outputstream. Constructs | |||
* a new POI POIFSFileSystem, passes in the workbook binary representation and | |||
* writes it out. | |||
* | |||
* @param stream - the java OutputStream you wish to write the XLS to | |||
* | |||
* @exception IOException if anything can't be written. | |||
* @see org.apache.poi.poifs.filesystem.POIFSFileSystem | |||
*/ | |||
void write(OutputStream stream) throws IOException; | |||
/** | |||
* Method getBytes - get the bytes of just the HSSF portions of the XLS file. | |||
* Use this to construct a POI POIFSFileSystem yourself. | |||
* | |||
* | |||
* @return byte[] array containing the binary representation of this workbook and all contained | |||
* sheets, rows, cells, etc. | |||
* | |||
* @see org.apache.poi.hssf.model.Workbook | |||
* @see org.apache.poi.hssf.model.Sheet | |||
*/ | |||
byte[] getBytes(); | |||
/** @deprecated Do not call this method from your applications. Use the methods | |||
* available in the HSSFRow to add string HSSFCells | |||
*/ | |||
int addSSTString(String string); | |||
/** @deprecated Do not call this method from your applications. Use the methods | |||
* available in the HSSFRow to get string HSSFCells | |||
*/ | |||
String getSSTString(int index); | |||
/** gets the total number of named ranges in the workboko | |||
* @return number of named ranges | |||
*/ | |||
int getNumberOfNames(); | |||
/** gets the Named range | |||
* @param index position of the named range | |||
* @return named range high level | |||
*/ | |||
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> | |||
* i.e. Reference = $A$1:$B$2 | |||
* @param sheetIndex Zero-based sheet index (0 Represents the first sheet to keep consistent with java) | |||
* @param reference Valid name Reference for the Print Area | |||
*/ | |||
void setPrintArea(int sheetIndex, String reference); | |||
/** | |||
* For the Convenience of Java Programmers maintaining pointers. | |||
* @see #setPrintArea(int, String) | |||
* @param sheetIndex Zero-based sheet index (0 = First Sheet) | |||
* @param startColumn Column to begin printarea | |||
* @param endColumn Column to end the printarea | |||
* @param startRow Row to begin the printarea | |||
* @param endRow Row to end the printarea | |||
*/ | |||
void setPrintArea(int sheetIndex, int startColumn, int endColumn, int startRow, int endRow); | |||
/** | |||
* Retrieves the reference for the printarea of the specified sheet, the sheet name is appended to the reference even if it was not specified. | |||
* @param sheetIndex Zero-based sheet index (0 Represents the first sheet to keep consistent with java) | |||
* @return String Null if no print area has been defined | |||
*/ | |||
String getPrintArea(int sheetIndex); | |||
/** | |||
* Delete the printarea for the sheet specified | |||
* @param sheetIndex Zero-based sheet index (0 = First Sheet) | |||
*/ | |||
void removePrintArea(int sheetIndex); | |||
/** creates a new named range and add it to the model | |||
* @return named range high level | |||
*/ | |||
Name createName(); | |||
/** gets the named range index by his name | |||
* <i>Note:</i>Excel named ranges are case-insensitive and | |||
* this method performs a case-insensitive search. | |||
* | |||
* @param name named range name | |||
* @return named range index | |||
*/ | |||
int getNameIndex(String name); | |||
/** remove the named range by his index | |||
* @param index named range index (0 based) | |||
*/ | |||
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 | |||
*/ | |||
DataFormat createDataFormat(); | |||
/** remove the named range by his name | |||
* @param name named range name | |||
*/ | |||
void removeName(String name); | |||
Palette getCustomPalette(); | |||
/** Test only. Do not use */ | |||
void insertChartRecord(); | |||
/** | |||
* Spits out a list of all the drawing records in the workbook. | |||
*/ | |||
void dumpDrawingGroupRecords(boolean fat); | |||
/** | |||
* Adds a picture to the workbook. | |||
* | |||
* @param pictureData The bytes of the picture | |||
* @param format The format of the picture. One of <code>PICTURE_TYPE_*</code> | |||
* | |||
* @return the index to this picture (1 based). | |||
*/ | |||
int addPicture(byte[] pictureData, int format); | |||
/** | |||
* Gets all pictures from the Workbook. | |||
* | |||
* @return the list of pictures (a list of {@link HSSFPictureData} objects.) | |||
*/ | |||
List getAllPictures(); | |||
/** | |||
* protect a workbook with a password (not encypted, just sets writeprotect | |||
* flags and the password. | |||
* @param password to set | |||
*/ | |||
void writeProtectWorkbook(String password, String username); | |||
/** | |||
* removes the write protect flag | |||
*/ | |||
void unwriteProtectWorkbook(); | |||
/** | |||
* Gets all embedded OLE2 objects from the Workbook. | |||
* | |||
* @return the list of embedded objects (a list of {@link HSSFObjectData} objects.) | |||
*/ | |||
List getAllEmbeddedObjects(); | |||
} |
@@ -0,0 +1,126 @@ | |||
/* ==================================================================== | |||
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.strings; | |||
import java.io.IOException; | |||
import java.io.InputStream; | |||
import java.io.OutputStream; | |||
import java.util.LinkedList; | |||
import org.apache.poi.ss.usermodel.SharedStringSource; | |||
import org.apache.xmlbeans.XmlException; | |||
import org.apache.xmlbeans.XmlOptions; | |||
import org.openxml4j.opc.PackagePart; | |||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRst; | |||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSst; | |||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.SstDocument; | |||
/** | |||
* Table of strings shared across all sheets in a workbook. | |||
* | |||
* FIXME: I don't like having a dependency on PackagePart (from OpenXML4J) in model classes. | |||
* I'd rather let Workbook keep track of all part-document relationships and keep all other | |||
* classes clean. -- Ugo | |||
* | |||
* @version $Id$ | |||
*/ | |||
public class SharedStringsTable implements SharedStringSource { | |||
private final LinkedList<String> strings = new LinkedList<String>(); | |||
private PackagePart part; | |||
/** | |||
* Create a new SharedStringsTable by reading it from a PackagePart. | |||
* | |||
* @param part The PackagePart to read. | |||
* @throws IOException if an error occurs while reading. | |||
*/ | |||
public SharedStringsTable(PackagePart part) throws IOException { | |||
this.part = part; | |||
InputStream is = part.getInputStream(); | |||
try { | |||
readFrom(is); | |||
} finally { | |||
if (is != null) is.close(); | |||
} | |||
} | |||
/** | |||
* Read this shared strings table from an XML file. | |||
* | |||
* @param is The input stream containing the XML document. | |||
* @throws IOException if an error occurs while reading. | |||
*/ | |||
public void readFrom(InputStream is) throws IOException { | |||
try { | |||
SstDocument doc = SstDocument.Factory.parse(is); | |||
for (CTRst rst : doc.getSst().getSiArray()) { | |||
strings.add(rst.getT()); | |||
} | |||
} catch (XmlException e) { | |||
throw new IOException(e.getLocalizedMessage()); | |||
} | |||
} | |||
public String getSharedStringAt(int idx) { | |||
return strings.get(idx); | |||
} | |||
public synchronized int putSharedString(String s) { | |||
if (strings.contains(s)) { | |||
return strings.indexOf(s); | |||
} | |||
strings.add(s); | |||
return strings.size() - 1; | |||
} | |||
/** | |||
* Save this table to its own PackagePart. | |||
* | |||
* @throws IOException if an error occurs while writing. | |||
*/ | |||
public void save() throws IOException { | |||
OutputStream out = this.part.getOutputStream(); | |||
try { | |||
writeTo(out); | |||
} finally { | |||
out.close(); | |||
} | |||
} | |||
/** | |||
* Write this table out as XML. | |||
* | |||
* @param out The stream to write to. | |||
* @throws IOException if an error occurs while writing. | |||
*/ | |||
public void writeTo(OutputStream out) throws IOException { | |||
XmlOptions options = new XmlOptions(); | |||
options.setSaveOuter(); | |||
SstDocument doc = SstDocument.Factory.newInstance(options); | |||
CTSst sst = doc.addNewSst(); | |||
sst.setCount(strings.size()); | |||
sst.setUniqueCount(strings.size()); | |||
for (String s : strings) { | |||
sst.addNewSi().setT(s); | |||
} | |||
doc.save(out); | |||
} | |||
} |
@@ -0,0 +1,268 @@ | |||
/* ==================================================================== | |||
Licensed to the Apache Software Foundation (ASF) under one or more | |||
contributor license agreements. See the NOTICE file distributed with | |||
this work for additional information regarding copyright ownership. | |||
The ASF licenses this file to You under the Apache License, Version 2.0 | |||
(the "License"); you may not use this file except in compliance with | |||
the License. You may obtain a copy of the License at | |||
http://www.apache.org/licenses/LICENSE-2.0 | |||
Unless required by applicable law or agreed to in writing, software | |||
distributed under the License is distributed on an "AS IS" BASIS, | |||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
See the License for the specific language governing permissions and | |||
limitations under the License. | |||
==================================================================== */ | |||
package org.apache.poi.xssf.usermodel; | |||
import java.util.Calendar; | |||
import java.util.Date; | |||
import org.apache.poi.hssf.usermodel.HSSFDateUtil; | |||
import org.apache.poi.ss.usermodel.Cell; | |||
import org.apache.poi.ss.usermodel.CellStyle; | |||
import org.apache.poi.ss.usermodel.Comment; | |||
import org.apache.poi.ss.usermodel.RichTextString; | |||
import org.apache.poi.ss.usermodel.SharedStringSource; | |||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCell; | |||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCellFormula; | |||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STCellType; | |||
public class XSSFCell implements Cell { | |||
private static final String FALSE_AS_STRING = "0"; | |||
private static final String TRUE_AS_STRING = "1"; | |||
private final CTCell cell; | |||
private final XSSFRow row; | |||
private SharedStringSource sharedStringSource; | |||
private short cellNum; | |||
/** | |||
* Create a new XSSFCell. This method is protected to be used only by | |||
* tests. | |||
*/ | |||
protected XSSFCell(XSSFRow row) { | |||
this(row, CTCell.Factory.newInstance()); | |||
} | |||
public XSSFCell(XSSFRow row, CTCell cell) { | |||
this.cell = cell; | |||
this.row = row; | |||
} | |||
protected void setSharedStringSource(SharedStringSource sharedStringSource) { | |||
this.sharedStringSource = sharedStringSource; | |||
} | |||
public boolean getBooleanCellValue() { | |||
if (STCellType.B != cell.getT()) { | |||
throw new NumberFormatException("You cannot get a boolean value from a non-boolean cell"); | |||
} | |||
if (cell.isSetV()) { | |||
return (TRUE_AS_STRING.equals(this.cell.getV())); | |||
} | |||
return false; | |||
} | |||
public Comment getCellComment() { | |||
// TODO Auto-generated method stub | |||
return null; | |||
} | |||
public String getCellFormula() { | |||
if (STCellType.STR != cell.getT()) { | |||
throw new NumberFormatException("You cannot get a formula from a non-formula cell"); | |||
} | |||
return this.cell.getF().getStringValue(); | |||
} | |||
public short getCellNum() { | |||
return this.cellNum; | |||
} | |||
public CellStyle getCellStyle() { | |||
// TODO Auto-generated method stub | |||
return null; | |||
} | |||
public int getCellType() { | |||
switch (this.cell.getT().intValue()) { | |||
case STCellType.INT_B: | |||
return CELL_TYPE_BOOLEAN; | |||
case STCellType.INT_N: | |||
return CELL_TYPE_NUMERIC; | |||
case STCellType.INT_E: | |||
return CELL_TYPE_ERROR; | |||
case STCellType.INT_S: // String is in shared strings | |||
case STCellType.INT_INLINE_STR: // String is inline in cell | |||
return CELL_TYPE_STRING; | |||
case STCellType.INT_STR: | |||
return CELL_TYPE_FORMULA; | |||
default: | |||
throw new IllegalStateException("Illegal cell type: " + this.cell.getT()); | |||
} | |||
} | |||
public Date getDateCellValue() { | |||
if (STCellType.N == this.cell.getT() || STCellType.STR == this.cell.getT()) { | |||
double value = this.getNumericCellValue(); | |||
if (false /* book.isUsing1904DateWindowing() */) { // FIXME | |||
return HSSFDateUtil.getJavaDate(value,true); | |||
} | |||
else { | |||
return HSSFDateUtil.getJavaDate(value,false); | |||
} | |||
} | |||
throw new NumberFormatException("You cannot get a date value from a cell of type " + this.cell.getT()); | |||
} | |||
public byte getErrorCellValue() { | |||
if (STCellType.E != cell.getT()) { | |||
throw new NumberFormatException("You cannot get a error value from a non-error cell"); | |||
} | |||
if (this.cell.isSetV()) { | |||
return Byte.parseByte(this.cell.getV()); | |||
} | |||
return 0; | |||
} | |||
public double getNumericCellValue() { | |||
if (STCellType.N != cell.getT() && STCellType.STR != cell.getT()) { | |||
throw new NumberFormatException("You cannot get a numeric value from a non-numeric cell"); | |||
} | |||
if (this.cell.isSetV()) { | |||
return Double.parseDouble(this.cell.getV()); | |||
} | |||
return Double.NaN; | |||
} | |||
public RichTextString getRichStringCellValue() { | |||
if(this.cell.getT() == STCellType.INLINE_STR) { | |||
if(this.cell.isSetV()) { | |||
return new XSSFRichTextString(this.cell.getV()); | |||
} else { | |||
return new XSSFRichTextString(""); | |||
} | |||
} | |||
if(this.cell.getT() == STCellType.S) { | |||
if(this.cell.isSetV()) { | |||
int sRef = Integer.parseInt(this.cell.getV()); | |||
return new XSSFRichTextString(sharedStringSource.getSharedStringAt(sRef)); | |||
} else { | |||
return new XSSFRichTextString(""); | |||
} | |||
} | |||
throw new NumberFormatException("You cannot get a string value from a non-string cell"); | |||
} | |||
public void setAsActiveCell() { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setCellComment(Comment comment) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setCellErrorValue(byte value) { | |||
if ((this.cell.getT() != STCellType.E) && (this.cell.getT() != STCellType.STR)) | |||
{ | |||
this.cell.setT(STCellType.E); | |||
} | |||
this.cell.setV(String.valueOf(value)); | |||
} | |||
public void setCellFormula(String formula) { | |||
if (this.cell.getT() != STCellType.STR) | |||
{ | |||
this.cell.setT(STCellType.STR); | |||
} | |||
CTCellFormula f = CTCellFormula.Factory.newInstance(); | |||
f.setStringValue(formula); | |||
this.cell.setF(f); | |||
// XXX: is this correct? Should we recompute the value when the formula changes? | |||
if (this.cell.isSetV()) { | |||
this.cell.unsetV(); | |||
} | |||
} | |||
public void setCellNum(short num) { | |||
this.cellNum = num; | |||
} | |||
public void setCellStyle(CellStyle style) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setCellType(int cellType) { | |||
switch (cellType) { | |||
case CELL_TYPE_BOOLEAN: | |||
this.cell.setT(STCellType.B); | |||
break; | |||
case CELL_TYPE_NUMERIC: | |||
this.cell.setT(STCellType.N); | |||
break; | |||
case CELL_TYPE_ERROR: | |||
this.cell.setT(STCellType.E); | |||
break; | |||
case CELL_TYPE_STRING: | |||
this.cell.setT(STCellType.S); | |||
break; | |||
default: | |||
throw new IllegalArgumentException("Illegal type: " + cellType); | |||
} | |||
} | |||
public void setCellValue(double value) { | |||
if ((this.cell.getT() != STCellType.N) && (this.cell.getT() != STCellType.STR)) | |||
{ | |||
this.cell.setT(STCellType.N); | |||
} | |||
this.cell.setV(String.valueOf(value)); | |||
} | |||
public void setCellValue(Date value) { | |||
setCellValue(HSSFDateUtil.getExcelDate(value, false /*this.book.isUsing1904DateWindowing()*/)); // FIXME | |||
} | |||
public void setCellValue(Calendar value) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setCellValue(RichTextString value) { | |||
if(this.cell.getT() == STCellType.INLINE_STR) { | |||
this.cell.setV(value.getString()); | |||
return; | |||
} | |||
if(this.cell.getT() != STCellType.S) { | |||
this.cell.setT(STCellType.S); | |||
} | |||
int sRef = sharedStringSource.putSharedString(value.getString()); | |||
this.cell.setV(Integer.toString(sRef)); | |||
} | |||
public void setCellValue(boolean value) { | |||
if ((this.cell.getT() != STCellType.B) && (this.cell.getT() != STCellType.STR)) | |||
{ | |||
this.cell.setT(STCellType.B); | |||
} | |||
this.cell.setV(value ? TRUE_AS_STRING : FALSE_AS_STRING); | |||
} | |||
@Override | |||
public String toString() { | |||
return "[" + this.row.getRowNum() + "," + this.getCellNum() + "] " + this.cell.getV(); | |||
} | |||
} |
@@ -0,0 +1,91 @@ | |||
/* ==================================================================== | |||
Licensed to the Apache Software Foundation (ASF) under one or more | |||
contributor license agreements. See the NOTICE file distributed with | |||
this work for additional information regarding copyright ownership. | |||
The ASF licenses this file to You under the Apache License, Version 2.0 | |||
(the "License"); you may not use this file except in compliance with | |||
the License. You may obtain a copy of the License at | |||
http://www.apache.org/licenses/LICENSE-2.0 | |||
Unless required by applicable law or agreed to in writing, software | |||
distributed under the License is distributed on an "AS IS" BASIS, | |||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
See the License for the specific language governing permissions and | |||
limitations under the License. | |||
==================================================================== */ | |||
package org.apache.poi.xssf.usermodel; | |||
import org.apache.poi.ss.usermodel.Font; | |||
import org.apache.poi.ss.usermodel.RichTextString; | |||
/** | |||
* TODO - the rich part | |||
*/ | |||
public class XSSFRichTextString implements RichTextString { | |||
private String string; | |||
public XSSFRichTextString(String str) { | |||
this.string = str; | |||
} | |||
public void applyFont(int startIndex, int endIndex, short fontIndex) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void applyFont(int startIndex, int endIndex, Font font) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void applyFont(Font font) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void applyFont(short fontIndex) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void clearFormatting() { | |||
// TODO Auto-generated method stub | |||
} | |||
public int compareTo(Object o) { | |||
// TODO Auto-generated method stub | |||
return 0; | |||
} | |||
public short getFontAtIndex(int index) { | |||
// TODO Auto-generated method stub | |||
return 0; | |||
} | |||
public short getFontOfFormattingRun(int index) { | |||
// TODO Auto-generated method stub | |||
return 0; | |||
} | |||
public int getIndexOfFormattingRun(int index) { | |||
// TODO Auto-generated method stub | |||
return 0; | |||
} | |||
public String getString() { | |||
return string; | |||
} | |||
public int length() { | |||
return string.length(); | |||
} | |||
public int numFormattingRuns() { | |||
// TODO Auto-generated method stub | |||
return 0; | |||
} | |||
} |
@@ -0,0 +1,200 @@ | |||
/* ==================================================================== | |||
Licensed to the Apache Software Foundation (ASF) under one or more | |||
contributor license agreements. See the NOTICE file distributed with | |||
this work for additional information regarding copyright ownership. | |||
The ASF licenses this file to You under the Apache License, Version 2.0 | |||
(the "License"); you may not use this file except in compliance with | |||
the License. You may obtain a copy of the License at | |||
http://www.apache.org/licenses/LICENSE-2.0 | |||
Unless required by applicable law or agreed to in writing, software | |||
distributed under the License is distributed on an "AS IS" BASIS, | |||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
See the License for the specific language governing permissions and | |||
limitations under the License. | |||
==================================================================== */ | |||
package org.apache.poi.xssf.usermodel; | |||
import java.util.Iterator; | |||
import java.util.LinkedList; | |||
import java.util.List; | |||
import org.apache.poi.ss.usermodel.Cell; | |||
import org.apache.poi.ss.usermodel.Row; | |||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCell; | |||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRow; | |||
public class XSSFRow implements Row { | |||
private CTRow row; | |||
private List<Cell> cells; | |||
/** | |||
* Create a new XSSFRow. This method is protected to be used only by | |||
* tests. | |||
*/ | |||
protected XSSFRow() { | |||
this(CTRow.Factory.newInstance()); | |||
} | |||
public XSSFRow(CTRow row) { | |||
this.row = row; | |||
this.cells = new LinkedList<Cell>(); | |||
for (CTCell c : row.getCArray()) { | |||
this.cells.add(new XSSFCell(this, c)); | |||
} | |||
} | |||
public Iterator<Cell> cellIterator() { | |||
return cells.iterator(); | |||
} | |||
public int compareTo(Object obj) { | |||
// TODO Auto-generated method stub | |||
return 0; | |||
} | |||
public Cell createCell(short column) { | |||
return createCell(column, Cell.CELL_TYPE_BLANK); | |||
} | |||
/** | |||
* Add a new empty cell to this row. | |||
* | |||
* @param column Cell column number. | |||
* @param index Position where to insert cell. | |||
* @param type TODO | |||
* @return The new cell. | |||
*/ | |||
protected XSSFCell addCell(short column, int index, int type) { | |||
CTCell ctcell = row.insertNewC(index); | |||
XSSFCell xcell = new XSSFCell(this, ctcell); | |||
xcell.setCellNum(column); | |||
if (type != Cell.CELL_TYPE_BLANK) { | |||
xcell.setCellType(type); | |||
} | |||
return xcell; | |||
} | |||
public Cell createCell(short column, int type) { | |||
int index = 0; | |||
for (Cell c : this.cells) { | |||
if (c.getCellNum() == column) { | |||
// Replace c with new Cell | |||
XSSFCell xcell = addCell(column, index, type); | |||
cells.set(index, xcell); | |||
return xcell; | |||
} | |||
if (c.getCellNum() > column) { | |||
XSSFCell xcell = addCell(column, index, type); | |||
cells.add(index, xcell); | |||
return xcell; | |||
} | |||
++index; | |||
} | |||
XSSFCell xcell = addCell(column, index, type); | |||
cells.add(xcell); | |||
return xcell; | |||
} | |||
public Cell getCell(short cellnum) { | |||
Iterator<Cell> it = cellIterator(); | |||
for ( ; it.hasNext() ; ) { | |||
Cell cell = it.next(); | |||
if (cell.getCellNum() == cellnum) { | |||
return cell; | |||
} | |||
} | |||
return null; | |||
} | |||
public short getFirstCellNum() { | |||
for (Iterator<Cell> it = cellIterator() ; it.hasNext() ; ) { | |||
Cell cell = it.next(); | |||
if (cell != null) { | |||
return cell.getCellNum(); | |||
} | |||
} | |||
return -1; | |||
} | |||
public short getHeight() { | |||
// TODO Auto-generated method stub | |||
return 0; | |||
} | |||
public float getHeightInPoints() { | |||
// TODO Auto-generated method stub | |||
return 0; | |||
} | |||
public short getLastCellNum() { | |||
short lastCellNum = -1; | |||
for (Iterator<Cell> it = cellIterator() ; it.hasNext() ; ) { | |||
Cell cell = it.next(); | |||
if (cell != null) { | |||
lastCellNum = cell.getCellNum(); | |||
} | |||
} | |||
return lastCellNum; | |||
} | |||
public int getPhysicalNumberOfCells() { | |||
int count = 0; | |||
for (Iterator<Cell> it = cellIterator() ; it.hasNext() ; ) { | |||
if (it.next() != null) { | |||
count++; | |||
} | |||
} | |||
return count; | |||
} | |||
public int getRowNum() { | |||
// TODO Auto-generated method stub | |||
return 0; | |||
} | |||
public boolean getZeroHeight() { | |||
// TODO Auto-generated method stub | |||
return false; | |||
} | |||
public void removeCell(Cell cell) { | |||
int counter = 0; | |||
for (Iterator<Cell> it = cellIterator(); it.hasNext(); ) { | |||
Cell c = it.next(); | |||
if (c.getCellNum() == cell.getCellNum()) { | |||
it.remove(); | |||
row.removeC(counter); | |||
continue; | |||
} | |||
counter++; | |||
} | |||
} | |||
public void setHeight(short height) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setHeightInPoints(float height) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setRowNum(int rowNum) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setZeroHeight(boolean height) { | |||
// TODO Auto-generated method stub | |||
} | |||
} |
@@ -0,0 +1,549 @@ | |||
/* ==================================================================== | |||
Licensed to the Apache Software Foundation (ASF) under one or more | |||
contributor license agreements. See the NOTICE file distributed with | |||
this work for additional information regarding copyright ownership. | |||
The ASF licenses this file to You under the Apache License, Version 2.0 | |||
(the "License"); you may not use this file except in compliance with | |||
the License. You may obtain a copy of the License at | |||
http://www.apache.org/licenses/LICENSE-2.0 | |||
Unless required by applicable law or agreed to in writing, software | |||
distributed under the License is distributed on an "AS IS" BASIS, | |||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
See the License for the specific language governing permissions and | |||
limitations under the License. | |||
==================================================================== */ | |||
package org.apache.poi.xssf.usermodel; | |||
import java.util.Iterator; | |||
import org.apache.poi.hssf.util.PaneInformation; | |||
import org.apache.poi.hssf.util.Region; | |||
import org.apache.poi.ss.usermodel.CellStyle; | |||
import org.apache.poi.ss.usermodel.Comment; | |||
import org.apache.poi.ss.usermodel.Footer; | |||
import org.apache.poi.ss.usermodel.Header; | |||
import org.apache.poi.ss.usermodel.Patriarch; | |||
import org.apache.poi.ss.usermodel.PrintSetup; | |||
import org.apache.poi.ss.usermodel.Row; | |||
import org.apache.poi.ss.usermodel.Sheet; | |||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCol; | |||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCols; | |||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTHeaderFooter; | |||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRow; | |||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSelection; | |||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheet; | |||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetFormatPr; | |||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetView; | |||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetViews; | |||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet; | |||
public class XSSFSheet implements Sheet { | |||
private CTSheet sheet; | |||
private CTWorksheet worksheet; | |||
public XSSFSheet(CTSheet sheet) { | |||
this.sheet = sheet; | |||
this.worksheet = CTWorksheet.Factory.newInstance(); | |||
this.worksheet.addNewSheetData(); | |||
// XXX ??? | |||
CTSheetViews views = this.worksheet.addNewSheetViews(); | |||
CTSheetView view = views.addNewSheetView(); | |||
view.setWorkbookViewId(0); | |||
view.setZoomScale(100); | |||
CTSelection selection = view.addNewSelection(); | |||
selection.setActiveCell("A1"); | |||
CTSheetFormatPr format = this.worksheet.addNewSheetFormatPr(); | |||
format.setDefaultColWidth(13.2307692307692); | |||
format.setDefaultRowHeight(13); | |||
format.setCustomHeight(true); | |||
CTCols cols = this.worksheet.addNewCols(); | |||
CTCol col = cols.addNewCol(); | |||
col.setMin(1); | |||
col.setMax(2); | |||
col.setWidth(13.2307692307692); | |||
col.setCustomWidth(true); | |||
for (int i = 3 ; i < 5 ; ++i) { | |||
col = cols.addNewCol(); | |||
col.setMin(i); | |||
col.setMax(i); | |||
col.setWidth(13.2307692307692); | |||
col.setCustomWidth(true); | |||
} | |||
CTHeaderFooter hf = this.worksheet.addNewHeaderFooter(); | |||
hf.setOddHeader("&C&A"); | |||
hf.setOddFooter("&C&\"Arial\"&10Page &P"); | |||
} | |||
protected CTWorksheet getWorksheet() { | |||
return this.worksheet; | |||
} | |||
public int addMergedRegion(Region region) { | |||
// TODO Auto-generated method stub | |||
return 0; | |||
} | |||
public void autoSizeColumn(short column) { | |||
// TODO Auto-generated method stub | |||
} | |||
public Patriarch createDrawingPatriarch() { | |||
// TODO Auto-generated method stub | |||
return null; | |||
} | |||
public void createFreezePane(int colSplit, int rowSplit, int leftmostColumn, int topRow) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void createFreezePane(int colSplit, int rowSplit) { | |||
// TODO Auto-generated method stub | |||
} | |||
public Row createRow(int rownum) { | |||
CTRow row = this.worksheet.getSheetData().insertNewRow(rownum); | |||
row.setR(rownum + 1); | |||
row.setHt(13.41); // XXX ??? | |||
return new XSSFRow(row); | |||
} | |||
public void createSplitPane(int splitPos, int splitPos2, int leftmostColumn, int topRow, int activePane) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void dumpDrawingRecords(boolean fat) { | |||
// TODO Auto-generated method stub | |||
} | |||
public boolean getAlternateExpression() { | |||
// TODO Auto-generated method stub | |||
return false; | |||
} | |||
public boolean getAlternateFormula() { | |||
// TODO Auto-generated method stub | |||
return false; | |||
} | |||
public boolean getAutobreaks() { | |||
// TODO Auto-generated method stub | |||
return false; | |||
} | |||
public Comment getCellComment(int row, int column) { | |||
// TODO Auto-generated method stub | |||
return null; | |||
} | |||
public short[] getColumnBreaks() { | |||
// TODO Auto-generated method stub | |||
return null; | |||
} | |||
public short getColumnWidth(short column) { | |||
// TODO Auto-generated method stub | |||
return 0; | |||
} | |||
public short getDefaultColumnWidth() { | |||
// TODO Auto-generated method stub | |||
return 0; | |||
} | |||
public short getDefaultRowHeight() { | |||
// TODO Auto-generated method stub | |||
return 0; | |||
} | |||
public float getDefaultRowHeightInPoints() { | |||
// TODO Auto-generated method stub | |||
return 0; | |||
} | |||
public boolean getDialog() { | |||
// TODO Auto-generated method stub | |||
return false; | |||
} | |||
public boolean getDisplayGuts() { | |||
// TODO Auto-generated method stub | |||
return false; | |||
} | |||
public int getFirstRowNum() { | |||
// TODO Auto-generated method stub | |||
return 0; | |||
} | |||
public boolean getFitToPage() { | |||
// TODO Auto-generated method stub | |||
return false; | |||
} | |||
public Footer getFooter() { | |||
// TODO Auto-generated method stub | |||
return null; | |||
} | |||
public Header getHeader() { | |||
// TODO Auto-generated method stub | |||
return null; | |||
} | |||
public boolean getHorizontallyCenter() { | |||
// TODO Auto-generated method stub | |||
return false; | |||
} | |||
public int getLastRowNum() { | |||
// TODO Auto-generated method stub | |||
return 0; | |||
} | |||
public short getLeftCol() { | |||
// TODO Auto-generated method stub | |||
return 0; | |||
} | |||
public double getMargin(short margin) { | |||
// TODO Auto-generated method stub | |||
return 0; | |||
} | |||
public Region getMergedRegionAt(int index) { | |||
// TODO Auto-generated method stub | |||
return null; | |||
} | |||
public int getNumMergedRegions() { | |||
// TODO Auto-generated method stub | |||
return 0; | |||
} | |||
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; | |||
} | |||
public int getPhysicalNumberOfRows() { | |||
// TODO Auto-generated method stub | |||
return 0; | |||
} | |||
public PrintSetup getPrintSetup() { | |||
// TODO Auto-generated method stub | |||
return null; | |||
} | |||
public boolean getProtect() { | |||
// TODO Auto-generated method stub | |||
return false; | |||
} | |||
public Row getRow(int rownum) { | |||
// TODO Auto-generated method stub | |||
return null; | |||
} | |||
public int[] getRowBreaks() { | |||
// TODO Auto-generated method stub | |||
return null; | |||
} | |||
public boolean getRowSumsBelow() { | |||
// TODO Auto-generated method stub | |||
return false; | |||
} | |||
public boolean getRowSumsRight() { | |||
// TODO Auto-generated method stub | |||
return false; | |||
} | |||
public boolean getScenarioProtect() { | |||
// TODO Auto-generated method stub | |||
return false; | |||
} | |||
public short getTopRow() { | |||
// TODO Auto-generated method stub | |||
return 0; | |||
} | |||
public boolean getVerticallyCenter(boolean value) { | |||
// TODO Auto-generated method stub | |||
return false; | |||
} | |||
public void groupColumn(short fromColumn, short toColumn) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void groupRow(int fromRow, int toRow) { | |||
// TODO Auto-generated method stub | |||
} | |||
public boolean isColumnBroken(short column) { | |||
// TODO Auto-generated method stub | |||
return false; | |||
} | |||
public boolean isColumnHidden(short column) { | |||
// TODO Auto-generated method stub | |||
return false; | |||
} | |||
public boolean isDisplayFormulas() { | |||
// TODO Auto-generated method stub | |||
return false; | |||
} | |||
public boolean isDisplayGridlines() { | |||
// TODO Auto-generated method stub | |||
return false; | |||
} | |||
public boolean isDisplayRowColHeadings() { | |||
// TODO Auto-generated method stub | |||
return false; | |||
} | |||
public boolean isGridsPrinted() { | |||
// TODO Auto-generated method stub | |||
return false; | |||
} | |||
public boolean isPrintGridlines() { | |||
// TODO Auto-generated method stub | |||
return false; | |||
} | |||
public boolean isRowBroken(int row) { | |||
// TODO Auto-generated method stub | |||
return false; | |||
} | |||
public void protectSheet(String password) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void removeColumnBreak(short column) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void removeMergedRegion(int index) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void removeRow(Row row) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void removeRowBreak(int row) { | |||
// TODO Auto-generated method stub | |||
} | |||
public Iterator rowIterator() { | |||
// TODO Auto-generated method stub | |||
return null; | |||
} | |||
public void setAlternativeExpression(boolean b) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setAlternativeFormula(boolean b) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setAutobreaks(boolean b) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setColumnBreak(short column) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setColumnGroupCollapsed(short columnNumber, boolean collapsed) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setColumnHidden(short column, boolean hidden) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setColumnWidth(short column, short width) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setDefaultColumnStyle(short column, CellStyle style) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setDefaultColumnWidth(short width) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setDefaultRowHeight(short height) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setDefaultRowHeightInPoints(float height) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setDialog(boolean b) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setDisplayFormulas(boolean show) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setDisplayGridlines(boolean show) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setDisplayGuts(boolean b) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setDisplayRowColHeadings(boolean show) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setFitToPage(boolean b) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setGridsPrinted(boolean value) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setHorizontallyCenter(boolean value) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setMargin(short margin, double size) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setPrintGridlines(boolean newPrintGridlines) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setProtect(boolean protect) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setRowBreak(int row) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setRowGroupCollapsed(int row, boolean collapse) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setRowSumsBelow(boolean b) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setRowSumsRight(boolean b) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setSelected(boolean sel) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setVerticallyCenter(boolean value) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setZoom(int numerator, int denominator) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void shiftRows(int startRow, int endRow, int n) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void shiftRows(int startRow, int endRow, int n, boolean copyRowHeight, boolean resetOriginalRowHeight) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void showInPane(short toprow, short leftcol) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void ungroupColumn(short fromColumn, short toColumn) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void ungroupRow(int fromRow, int toRow) { | |||
// TODO Auto-generated method stub | |||
} | |||
} |
@@ -0,0 +1,386 @@ | |||
/* ==================================================================== | |||
Licensed to the Apache Software Foundation (ASF) under one or more | |||
contributor license agreements. See the NOTICE file distributed with | |||
this work for additional information regarding copyright ownership. | |||
The ASF licenses this file to You under the Apache License, Version 2.0 | |||
(the "License"); you may not use this file except in compliance with | |||
the License. You may obtain a copy of the License at | |||
http://www.apache.org/licenses/LICENSE-2.0 | |||
Unless required by applicable law or agreed to in writing, software | |||
distributed under the License is distributed on an "AS IS" BASIS, | |||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
See the License for the specific language governing permissions and | |||
limitations under the License. | |||
==================================================================== */ | |||
package org.apache.poi.xssf.usermodel; | |||
import java.io.BufferedInputStream; | |||
import java.io.File; | |||
import java.io.FileInputStream; | |||
import java.io.IOException; | |||
import java.io.OutputStream; | |||
import java.util.LinkedList; | |||
import java.util.List; | |||
import javax.xml.namespace.QName; | |||
import org.apache.poi.hssf.usermodel.HSSFPalette; | |||
import org.apache.poi.ss.usermodel.CellStyle; | |||
import org.apache.poi.ss.usermodel.DataFormat; | |||
import org.apache.poi.ss.usermodel.Font; | |||
import org.apache.poi.ss.usermodel.Name; | |||
import org.apache.poi.ss.usermodel.Sheet; | |||
import org.apache.poi.ss.usermodel.Workbook; | |||
import org.apache.xmlbeans.XmlOptions; | |||
import org.openxml4j.exceptions.InvalidFormatException; | |||
import org.openxml4j.opc.Package; | |||
import org.openxml4j.opc.PackagePart; | |||
import org.openxml4j.opc.PackagePartName; | |||
import org.openxml4j.opc.PackageRelationshipTypes; | |||
import org.openxml4j.opc.PackagingURIHelper; | |||
import org.openxml4j.opc.TargetMode; | |||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBookView; | |||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBookViews; | |||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheet; | |||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbook; | |||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet; | |||
public class XSSFWorkbook implements Workbook { | |||
private CTWorkbook workbook; | |||
private List<XSSFSheet> sheets = new LinkedList<XSSFSheet>(); | |||
public XSSFWorkbook() { | |||
this.workbook = CTWorkbook.Factory.newInstance(); | |||
CTBookViews bvs = this.workbook.addNewBookViews(); | |||
CTBookView bv = bvs.addNewWorkbookView(); | |||
bv.setActiveTab(0); | |||
this.workbook.addNewSheets(); | |||
} | |||
public int addPicture(byte[] pictureData, int format) { | |||
// TODO Auto-generated method stub | |||
return 0; | |||
} | |||
public int addSSTString(String string) { | |||
// TODO Auto-generated method stub | |||
return 0; | |||
} | |||
public Sheet cloneSheet(int sheetNum) { | |||
// TODO Auto-generated method stub | |||
return null; | |||
} | |||
public CellStyle createCellStyle() { | |||
// TODO Auto-generated method stub | |||
return null; | |||
} | |||
public DataFormat createDataFormat() { | |||
// TODO Auto-generated method stub | |||
return null; | |||
} | |||
public Font createFont() { | |||
// TODO Auto-generated method stub | |||
return null; | |||
} | |||
public Name createName() { | |||
// TODO Auto-generated method stub | |||
return null; | |||
} | |||
public Sheet createSheet() { | |||
return createSheet(null); | |||
} | |||
public Sheet createSheet(String sheetname) { | |||
CTSheet sheet = workbook.getSheets().addNewSheet(); | |||
if (sheetname != null) { | |||
sheet.setName(sheetname); | |||
} | |||
XSSFSheet wrapper = new XSSFSheet(sheet); | |||
this.sheets.add(wrapper); | |||
return wrapper; | |||
} | |||
public void dumpDrawingGroupRecords(boolean fat) { | |||
// TODO Auto-generated method stub | |||
} | |||
public Font findFont(short boldWeight, short color, short fontHeight, String name, boolean italic, boolean strikeout, short typeOffset, byte underline) { | |||
// TODO Auto-generated method stub | |||
return null; | |||
} | |||
public List getAllEmbeddedObjects() { | |||
// TODO Auto-generated method stub | |||
return null; | |||
} | |||
public List getAllPictures() { | |||
// TODO Auto-generated method stub | |||
return null; | |||
} | |||
public boolean getBackupFlag() { | |||
// TODO Auto-generated method stub | |||
return false; | |||
} | |||
public byte[] getBytes() { | |||
// TODO Auto-generated method stub | |||
return null; | |||
} | |||
public CellStyle getCellStyleAt(short idx) { | |||
// TODO Auto-generated method stub | |||
return null; | |||
} | |||
public HSSFPalette getCustomPalette() { | |||
// TODO Auto-generated method stub | |||
return null; | |||
} | |||
public short getDisplayedTab() { | |||
// TODO Auto-generated method stub | |||
return 0; | |||
} | |||
public Font getFontAt(short idx) { | |||
// TODO Auto-generated method stub | |||
return null; | |||
} | |||
public Name getNameAt(int index) { | |||
// TODO Auto-generated method stub | |||
return null; | |||
} | |||
public int getNameIndex(String name) { | |||
// TODO Auto-generated method stub | |||
return 0; | |||
} | |||
public String getNameName(int index) { | |||
// TODO Auto-generated method stub | |||
return null; | |||
} | |||
public short getNumCellStyles() { | |||
// TODO Auto-generated method stub | |||
return 0; | |||
} | |||
public short getNumberOfFonts() { | |||
// TODO Auto-generated method stub | |||
return 0; | |||
} | |||
public int getNumberOfNames() { | |||
// TODO Auto-generated method stub | |||
return 0; | |||
} | |||
public int getNumberOfSheets() { | |||
return this.workbook.getSheets().sizeOfSheetArray(); | |||
} | |||
public String getPrintArea(int sheetIndex) { | |||
// TODO Auto-generated method stub | |||
return null; | |||
} | |||
public String getSSTString(int index) { | |||
// TODO Auto-generated method stub | |||
return null; | |||
} | |||
public short getSelectedTab() { | |||
// TODO Auto-generated method stub | |||
return 0; | |||
} | |||
public Sheet getSheet(String name) { | |||
// TODO Auto-generated method stub | |||
return null; | |||
} | |||
public Sheet getSheetAt(int index) { | |||
return this.sheets.get(index - 1); | |||
} | |||
public int getSheetIndex(String name) { | |||
// TODO Auto-generated method stub | |||
return 0; | |||
} | |||
public int getSheetIndex(Sheet sheet) { | |||
// TODO Auto-generated method stub | |||
return 0; | |||
} | |||
public String getSheetName(int sheet) { | |||
// TODO Auto-generated method stub | |||
return null; | |||
} | |||
public void insertChartRecord() { | |||
// TODO Auto-generated method stub | |||
} | |||
public void removeName(int index) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void removeName(String name) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void removePrintArea(int sheetIndex) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void removeSheetAt(int index) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setBackupFlag(boolean backupValue) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setDisplayedTab(short index) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setPrintArea(int sheetIndex, String reference) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setPrintArea(int sheetIndex, int startColumn, int endColumn, int startRow, int endRow) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setRepeatingRowsAndColumns(int sheetIndex, int startColumn, int endColumn, int startRow, int endRow) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setSelectedTab(short index) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setSheetName(int sheet, String name) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setSheetName(int sheet, String name, short encoding) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void setSheetOrder(String sheetname, int pos) { | |||
// TODO Auto-generated method stub | |||
} | |||
public void unwriteProtectWorkbook() { | |||
// TODO Auto-generated method stub | |||
} | |||
/** | |||
* XXX: Horribly naive implementation based on OpenXML4J's Package class, | |||
* which sucks because it does not allow instantiation using an | |||
* OutputStream instead of a File. So we write the Package to a temporary | |||
* file, which we then proceed to read and stream out. | |||
*/ | |||
public void write(OutputStream stream) throws IOException { | |||
// Create a temporary file | |||
File file = File.createTempFile("poi-", ".xlsx"); | |||
file.delete(); | |||
try { | |||
// Create a package referring the temp file. | |||
Package pkg = Package.create(file); | |||
// Main part | |||
PackagePartName corePartName = PackagingURIHelper.createPartName("/xl/workbook.xml"); | |||
// Create main part relationship | |||
pkg.addRelationship(corePartName, TargetMode.INTERNAL, PackageRelationshipTypes.CORE_DOCUMENT, "rId1"); | |||
// Create main document part | |||
PackagePart corePart = pkg.createPart(corePartName, | |||
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"); | |||
XmlOptions xmlOptions = new XmlOptions(); | |||
// Requests use of whitespace for easier reading | |||
xmlOptions.setSavePrettyPrint(); | |||
xmlOptions.setSaveOuter(); | |||
// XXX This should not be needed, but apparently the setSaveOuter call above does not work in XMLBeans 2.2 | |||
xmlOptions.setSaveSyntheticDocumentElement(new QName(CTWorkbook.type.getName().getNamespaceURI(), "workbook")); | |||
xmlOptions.setUseDefaultNamespace(); | |||
OutputStream out = corePart.getOutputStream(); | |||
workbook.save(out, xmlOptions); | |||
out.close(); | |||
for (int i = 1 ; i <= this.getNumberOfSheets() ; ++i) { | |||
XSSFSheet sheet = (XSSFSheet) this.getSheetAt(i); | |||
PackagePartName partName = PackagingURIHelper.createPartName("/xl/worksheets/sheet" + i + ".xml"); | |||
corePart.addRelationship(partName, TargetMode.INTERNAL, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet", "rSheet" + 1); | |||
PackagePart part = pkg.createPart(partName, | |||
"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"); | |||
// XXX This should not be needed, but apparently the setSaveOuter call above does not work in XMLBeans 2.2 | |||
xmlOptions.setSaveSyntheticDocumentElement(new QName(CTWorksheet.type.getName().getNamespaceURI(), "worksheet")); | |||
out = part.getOutputStream(); | |||
sheet.getWorksheet().save(out, xmlOptions); | |||
// XXX DEBUG | |||
System.err.println(sheet.getWorksheet().xmlText(xmlOptions)); | |||
out.close(); | |||
} | |||
pkg.close(); | |||
byte[] buf = new byte[8192]; | |||
int nread = 0; | |||
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); | |||
try { | |||
while ((nread = bis.read(buf)) > 0) { | |||
stream.write(buf, 0, nread); | |||
} | |||
} finally { | |||
bis.close(); | |||
} | |||
} catch (InvalidFormatException e) { | |||
// TODO: replace with more meaningful exception | |||
throw new RuntimeException(e); | |||
} | |||
} | |||
public void writeProtectWorkbook(String password, String username) { | |||
// TODO Auto-generated method stub | |||
} | |||
} |
@@ -0,0 +1,178 @@ | |||
/* ==================================================================== | |||
Licensed to the Apache Software Foundation (ASF) under one or more | |||
contributor license agreements. See the NOTICE file distributed with | |||
this work for additional information regarding copyright ownership. | |||
The ASF licenses this file to You under the Apache License, Version 2.0 | |||
(the "License"); you may not use this file except in compliance with | |||
the License. You may obtain a copy of the License at | |||
http://www.apache.org/licenses/LICENSE-2.0 | |||
Unless required by applicable law or agreed to in writing, software | |||
distributed under the License is distributed on an "AS IS" BASIS, | |||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
See the License for the specific language governing permissions and | |||
limitations under the License. | |||
==================================================================== */ | |||
package org.apache.poi.xssf.usermodel; | |||
import java.util.ArrayList; | |||
import java.util.Calendar; | |||
import java.util.Date; | |||
import junit.framework.TestCase; | |||
import org.apache.poi.ss.usermodel.Cell; | |||
import org.apache.poi.ss.usermodel.SharedStringSource; | |||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCell; | |||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STCellType; | |||
public class TestXSSFCell extends TestCase { | |||
/** | |||
* Test setting and getting boolean values. | |||
*/ | |||
public void testSetGetBoolean() throws Exception { | |||
XSSFCell cell = new XSSFCell(new XSSFRow()); | |||
cell.setCellValue(true); | |||
assertEquals(Cell.CELL_TYPE_BOOLEAN, cell.getCellType()); | |||
assertTrue(cell.getBooleanCellValue()); | |||
cell.setCellValue(false); | |||
assertFalse(cell.getBooleanCellValue()); | |||
cell.setCellType(Cell.CELL_TYPE_NUMERIC); | |||
try { | |||
cell.getBooleanCellValue(); | |||
fail("Exception expected"); | |||
} catch (NumberFormatException e) { | |||
// success | |||
} | |||
} | |||
/** | |||
* Test setting and getting numeric values. | |||
*/ | |||
public void testSetGetNumeric() throws Exception { | |||
XSSFCell cell = new XSSFCell(new XSSFRow()); | |||
cell.setCellValue(10d); | |||
assertEquals(Cell.CELL_TYPE_NUMERIC, cell.getCellType()); | |||
assertEquals(10d, cell.getNumericCellValue()); | |||
cell.setCellValue(-23.76); | |||
assertEquals(-23.76, cell.getNumericCellValue()); | |||
} | |||
/** | |||
* Test setting and getting numeric values. | |||
*/ | |||
public void testSetGetDate() throws Exception { | |||
XSSFCell cell = new XSSFCell(new XSSFRow()); | |||
Date now = new Date(); | |||
cell.setCellValue(now); | |||
assertEquals(Cell.CELL_TYPE_NUMERIC, cell.getCellType()); | |||
assertEquals(now, cell.getDateCellValue()); | |||
// Test case for 1904 hack | |||
Calendar cal = Calendar.getInstance(); | |||
cal.set(1903, 1, 8); | |||
Date before1904 = cal.getTime(); | |||
cell.setCellValue(before1904); | |||
assertEquals(before1904, cell.getDateCellValue()); | |||
cell.setCellType(Cell.CELL_TYPE_BOOLEAN); | |||
try { | |||
cell.getDateCellValue(); | |||
fail("Exception expected"); | |||
} catch (NumberFormatException e) { | |||
// success | |||
} | |||
} | |||
public void testSetGetError() throws Exception { | |||
XSSFCell cell = new XSSFCell(new XSSFRow()); | |||
cell.setCellErrorValue((byte)255); | |||
assertEquals(Cell.CELL_TYPE_ERROR, cell.getCellType()); | |||
assertEquals((byte)255, cell.getErrorCellValue()); | |||
} | |||
public void testSetGetFormula() throws Exception { | |||
XSSFCell cell = new XSSFCell(new XSSFRow()); | |||
String formula = "SQRT(C2^2+D2^2)"; | |||
cell.setCellFormula(formula); | |||
assertEquals(Cell.CELL_TYPE_FORMULA, cell.getCellType()); | |||
assertEquals(formula, cell.getCellFormula()); | |||
assertTrue( Double.isNaN( cell.getNumericCellValue() )); | |||
} | |||
public void testSetGetStringInline() throws Exception { | |||
CTCell rawCell = CTCell.Factory.newInstance(); | |||
XSSFCell cell = new XSSFCell(new XSSFRow(), rawCell); | |||
cell.setSharedStringSource(new DummySharedStringSource()); | |||
// Default is shared string mode, so have to do this explicitly | |||
rawCell.setT(STCellType.INLINE_STR); | |||
assertEquals(STCellType.INT_INLINE_STR, rawCell.getT().intValue()); | |||
assertEquals(Cell.CELL_TYPE_STRING, cell.getCellType()); | |||
assertEquals("", cell.getRichStringCellValue().getString()); | |||
cell.setCellValue(new XSSFRichTextString("Foo")); | |||
assertEquals(STCellType.INT_INLINE_STR, rawCell.getT().intValue()); | |||
assertEquals(Cell.CELL_TYPE_STRING, cell.getCellType()); | |||
assertEquals("Foo", cell.getRichStringCellValue().getString()); | |||
// To number and back to string, stops being inline | |||
cell.setCellValue(1.4); | |||
cell.setCellValue(new XSSFRichTextString("Foo2")); | |||
assertEquals(STCellType.INT_S, rawCell.getT().intValue()); | |||
assertEquals(Cell.CELL_TYPE_STRING, cell.getCellType()); | |||
assertEquals("Foo2", cell.getRichStringCellValue().getString()); | |||
} | |||
public void testSetGetStringShared() throws Exception { | |||
XSSFCell cell = new XSSFCell(new XSSFRow()); | |||
cell.setSharedStringSource(new DummySharedStringSource()); | |||
cell.setCellValue(new XSSFRichTextString("")); | |||
assertEquals(Cell.CELL_TYPE_STRING, cell.getCellType()); | |||
assertEquals("", cell.getRichStringCellValue().getString()); | |||
cell.setCellValue(new XSSFRichTextString("Foo")); | |||
assertEquals(Cell.CELL_TYPE_STRING, cell.getCellType()); | |||
assertEquals("Foo", cell.getRichStringCellValue().getString()); | |||
} | |||
/** | |||
* Test that empty cells (no v element) return default values. | |||
*/ | |||
public void testGetEmptyCellValue() throws Exception { | |||
XSSFCell cell = new XSSFCell(new XSSFRow()); | |||
cell.setCellType(Cell.CELL_TYPE_BOOLEAN); | |||
assertFalse(cell.getBooleanCellValue()); | |||
cell.setCellType(Cell.CELL_TYPE_NUMERIC); | |||
assertTrue(Double.isNaN( cell.getNumericCellValue() )); | |||
assertNull(cell.getDateCellValue()); | |||
cell.setCellType(Cell.CELL_TYPE_ERROR); | |||
assertEquals(0, cell.getErrorCellValue()); | |||
cell.setCellType(Cell.CELL_TYPE_STRING); | |||
assertEquals("", cell.getRichStringCellValue().getString()); | |||
} | |||
public static class DummySharedStringSource implements SharedStringSource { | |||
ArrayList<String> strs = new ArrayList<String>(); | |||
public String getSharedStringAt(int idx) { | |||
return strs.get(idx); | |||
} | |||
public synchronized int putSharedString(String s) { | |||
if(strs.contains(s)) { | |||
return strs.indexOf(s); | |||
} | |||
strs.add(s); | |||
return strs.size() - 1; | |||
} | |||
} | |||
} |
@@ -0,0 +1,159 @@ | |||
/* ==================================================================== | |||
Licensed to the Apache Software Foundation (ASF) under one or more | |||
contributor license agreements. See the NOTICE file distributed with | |||
this work for additional information regarding copyright ownership. | |||
The ASF licenses this file to You under the Apache License, Version 2.0 | |||
(the "License"); you may not use this file except in compliance with | |||
the License. You may obtain a copy of the License at | |||
http://www.apache.org/licenses/LICENSE-2.0 | |||
Unless required by applicable law or agreed to in writing, software | |||
distributed under the License is distributed on an "AS IS" BASIS, | |||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
See the License for the specific language governing permissions and | |||
limitations under the License. | |||
==================================================================== */ | |||
package org.apache.poi.xssf.usermodel; | |||
import java.util.Iterator; | |||
import junit.framework.TestCase; | |||
import org.apache.poi.ss.usermodel.Cell; | |||
public class TestXSSFRow extends TestCase { | |||
/** | |||
* Test adding cells to a row in various places and see if we can find them again. | |||
*/ | |||
public void testAddAndIterateCells() { | |||
XSSFRow row = new XSSFRow(); | |||
// One cell at the beginning | |||
Cell cell1 = row.createCell((short) 1); | |||
Iterator<Cell> it = row.cellIterator(); | |||
assertTrue(it.hasNext()); | |||
assertTrue(cell1 == it.next()); | |||
assertFalse(it.hasNext()); | |||
// Add another cell at the end | |||
Cell cell2 = row.createCell((short) 99); | |||
it = row.cellIterator(); | |||
assertTrue(it.hasNext()); | |||
assertTrue(cell1 == it.next()); | |||
assertTrue(it.hasNext()); | |||
assertTrue(cell2 == it.next()); | |||
// Add another cell at the beginning | |||
Cell cell3 = row.createCell((short) 0); | |||
it = row.cellIterator(); | |||
assertTrue(it.hasNext()); | |||
assertTrue(cell3 == it.next()); | |||
assertTrue(it.hasNext()); | |||
assertTrue(cell1 == it.next()); | |||
assertTrue(it.hasNext()); | |||
assertTrue(cell2 == it.next()); | |||
// Replace cell1 | |||
Cell cell4 = row.createCell((short) 1); | |||
it = row.cellIterator(); | |||
assertTrue(it.hasNext()); | |||
assertTrue(cell3 == it.next()); | |||
assertTrue(it.hasNext()); | |||
assertTrue(cell4 == it.next()); | |||
assertTrue(it.hasNext()); | |||
assertTrue(cell2 == it.next()); | |||
assertFalse(it.hasNext()); | |||
// Add another cell, specifying the cellType | |||
Cell cell5 = row.createCell((short) 2, Cell.CELL_TYPE_STRING); | |||
it = row.cellIterator(); | |||
assertNotNull(cell5); | |||
assertTrue(it.hasNext()); | |||
assertTrue(cell3 == it.next()); | |||
assertTrue(it.hasNext()); | |||
assertTrue(cell4 == it.next()); | |||
assertTrue(it.hasNext()); | |||
assertTrue(cell5 == it.next()); | |||
assertTrue(it.hasNext()); | |||
assertTrue(cell2 == it.next()); | |||
assertEquals(Cell.CELL_TYPE_STRING, cell5.getCellType()); | |||
} | |||
public void testGetCell() throws Exception { | |||
XSSFRow row = getSampleRow(); | |||
assertNotNull(row.getCell((short) 2)); | |||
assertNotNull(row.getCell((short) 3)); | |||
assertNotNull(row.getCell((short) 4)); | |||
assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell((short) 3).getCellType()); | |||
assertNull(row.getCell((short) 5)); | |||
} | |||
public void testGetPhysicalNumberOfCells() throws Exception { | |||
XSSFRow row = getSampleRow(); | |||
assertEquals(7, row.getPhysicalNumberOfCells()); | |||
} | |||
public void testGetFirstCellNum() throws Exception { | |||
// Test a row with some cells | |||
XSSFRow row = getSampleRow(); | |||
assertFalse(row.getFirstCellNum() == (short) 0); | |||
assertEquals((short) 2, row.getFirstCellNum()); | |||
// Test after removing the first cell | |||
Cell cell = row.getCell((short) 2); | |||
row.removeCell(cell); | |||
assertFalse(row.getFirstCellNum() == (short) 2); | |||
// Test a row without cells | |||
XSSFRow emptyRow = new XSSFRow(); | |||
assertEquals(-1, emptyRow.getFirstCellNum()); | |||
} | |||
public void testLastCellNum() throws Exception { | |||
XSSFRow row = getSampleRow(); | |||
assertEquals(100, row.getLastCellNum()); | |||
Cell cell = row.getCell((short) 100); | |||
row.removeCell(cell); | |||
assertFalse(row.getLastCellNum() == (short) 100); | |||
} | |||
public void testRemoveCell() throws Exception { | |||
XSSFRow row = getSampleRow(); | |||
// Test removing the first cell | |||
Cell firstCell = row.getCell((short) 2); | |||
assertNotNull(firstCell); | |||
assertEquals(7, row.getPhysicalNumberOfCells()); | |||
row.removeCell(firstCell); | |||
assertEquals(6, row.getPhysicalNumberOfCells()); | |||
firstCell = row.getCell((short) 2); | |||
assertNull(firstCell); | |||
// Test removing the last cell | |||
Cell lastCell = row.getCell((short) 100); | |||
row.removeCell(lastCell); | |||
} | |||
/** | |||
* Method that returns a row with some sample cells | |||
* @return row | |||
*/ | |||
public static XSSFRow getSampleRow() { | |||
XSSFRow row = new XSSFRow(); | |||
row.createCell((short) 2); | |||
row.createCell((short) 3, Cell.CELL_TYPE_NUMERIC); | |||
row.createCell((short) 4); | |||
row.createCell((short) 6); | |||
row.createCell((short) 7); | |||
row.createCell((short) 8); | |||
row.createCell((short) 100); | |||
return row; | |||
} | |||
} |