deprecated constants pointing to MissingCellPolicy - use enum instead

javadocs fixes (jdk8)

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1750172 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Andreas Beeker 2016-06-24 23:31:12 +00:00
parent 85f22291be
commit 099f63d054
14 changed files with 229 additions and 181 deletions

View File

@ -37,6 +37,7 @@ import org.apache.poi.poifs.filesystem.DirectoryNode;
import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.formula.eval.ErrorEval; import org.apache.poi.ss.formula.eval.ErrorEval;
import org.apache.poi.ss.usermodel.HeaderFooter; import org.apache.poi.ss.usermodel.HeaderFooter;
import org.apache.poi.ss.usermodel.Row.MissingCellPolicy;
/** /**
* A text extractor for Excel files. * A text extractor for Excel files.
@ -236,6 +237,7 @@ public class ExcelExtractor extends POIOLE2TextExtractor implements org.apache.p
extractor.setIncludeHeadersFooters(cmdArgs.shouldIncludeHeadersFooters()); extractor.setIncludeHeadersFooters(cmdArgs.shouldIncludeHeadersFooters());
System.out.println(extractor.getText()); System.out.println(extractor.getText());
extractor.close(); extractor.close();
wb.close();
} }
/** /**
* Should sheet names be included? Default is true * Should sheet names be included? Default is true
@ -280,7 +282,7 @@ public class ExcelExtractor extends POIOLE2TextExtractor implements org.apache.p
// We don't care about the difference between // We don't care about the difference between
// null (missing) and blank cells // null (missing) and blank cells
_wb.setMissingCellPolicy(HSSFRow.RETURN_BLANK_AS_NULL); _wb.setMissingCellPolicy(MissingCellPolicy.RETURN_BLANK_AS_NULL);
// Process each sheet in turn // Process each sheet in turn
for(int i=0;i<_wb.getNumberOfSheets();i++) { for(int i=0;i<_wb.getNumberOfSheets();i++) {

View File

@ -107,9 +107,10 @@ public final class HSSFRow implements Row, Comparable<HSSFRow> {
* @throws IllegalArgumentException if columnIndex < 0 or greater than 255, * @throws IllegalArgumentException if columnIndex < 0 or greater than 255,
* the maximum number of columns supported by the Excel binary format (.xls) * the maximum number of columns supported by the Excel binary format (.xls)
*/ */
@Override
public HSSFCell createCell(int column) public HSSFCell createCell(int column)
{ {
return this.createCell(column,HSSFCell.CELL_TYPE_BLANK); return this.createCell(column,Cell.CELL_TYPE_BLANK);
} }
/** /**
@ -126,6 +127,7 @@ public final class HSSFRow implements Row, Comparable<HSSFRow> {
* @throws IllegalArgumentException if columnIndex < 0 or greater than 255, * @throws IllegalArgumentException if columnIndex < 0 or greater than 255,
* the maximum number of columns supported by the Excel binary format (.xls) * the maximum number of columns supported by the Excel binary format (.xls)
*/ */
@Override
public HSSFCell createCell(int columnIndex, int type) public HSSFCell createCell(int columnIndex, int type)
{ {
short shortCellNum = (short)columnIndex; short shortCellNum = (short)columnIndex;
@ -143,6 +145,7 @@ public final class HSSFRow implements Row, Comparable<HSSFRow> {
* remove the HSSFCell from this row. * remove the HSSFCell from this row.
* @param cell to remove * @param cell to remove
*/ */
@Override
public void removeCell(Cell cell) { public void removeCell(Cell cell) {
if(cell == null) { if(cell == null) {
throw new IllegalArgumentException("cell must not be null"); throw new IllegalArgumentException("cell must not be null");
@ -221,6 +224,7 @@ public final class HSSFRow implements Row, Comparable<HSSFRow> {
* @param rowIndex the row number (0-based) * @param rowIndex the row number (0-based)
* @throws IndexOutOfBoundsException if the row number is not within the range 0-65535. * @throws IndexOutOfBoundsException if the row number is not within the range 0-65535.
*/ */
@Override
public void setRowNum(int rowIndex) { public void setRowNum(int rowIndex) {
int maxrow = SpreadsheetVersion.EXCEL97.getLastRowIndex(); int maxrow = SpreadsheetVersion.EXCEL97.getLastRowIndex();
if ((rowIndex < 0) || (rowIndex > maxrow)) { if ((rowIndex < 0) || (rowIndex > maxrow)) {
@ -237,6 +241,7 @@ public final class HSSFRow implements Row, Comparable<HSSFRow> {
* get row number this row represents * get row number this row represents
* @return the row number (0 based) * @return the row number (0 based)
*/ */
@Override
public int getRowNum() public int getRowNum()
{ {
return rowNum; return rowNum;
@ -247,6 +252,7 @@ public final class HSSFRow implements Row, Comparable<HSSFRow> {
* *
* @return the HSSFSheet that owns this row * @return the HSSFSheet that owns this row
*/ */
@Override
public HSSFSheet getSheet() public HSSFSheet getSheet()
{ {
return sheet; return sheet;
@ -257,6 +263,7 @@ public final class HSSFRow implements Row, Comparable<HSSFRow> {
* put it into more groups (outlines), reduced as * put it into more groups (outlines), reduced as
* you take it out of them. * you take it out of them.
*/ */
@Override
public int getOutlineLevel() { public int getOutlineLevel() {
return row.getOutlineLevel(); return row.getOutlineLevel();
} }
@ -339,6 +346,7 @@ public final class HSSFRow implements Row, Comparable<HSSFRow> {
* @param cellnum 0 based column number * @param cellnum 0 based column number
* @return HSSFCell representing that column or null if undefined. * @return HSSFCell representing that column or null if undefined.
*/ */
@Override
public HSSFCell getCell(int cellnum) { public HSSFCell getCell(int cellnum) {
return getCell(cellnum, book.getMissingCellPolicy()); return getCell(cellnum, book.getMissingCellPolicy());
} }
@ -352,31 +360,27 @@ public final class HSSFRow implements Row, Comparable<HSSFRow> {
* @param policy Policy on blank / missing cells * @param policy Policy on blank / missing cells
* @return representing that column or null if undefined + policy allows. * @return representing that column or null if undefined + policy allows.
*/ */
@Override
public HSSFCell getCell(int cellnum, MissingCellPolicy policy) { public HSSFCell getCell(int cellnum, MissingCellPolicy policy) {
HSSFCell cell = retrieveCell(cellnum); HSSFCell cell = retrieveCell(cellnum);
if(policy == RETURN_NULL_AND_BLANK) { switch (policy) {
return cell; case RETURN_NULL_AND_BLANK:
return cell;
case RETURN_BLANK_AS_NULL:
boolean isBlank = (cell != null && cell.getCellType() == Cell.CELL_TYPE_BLANK);
return (isBlank) ? null : cell;
case CREATE_NULL_AS_BLANK:
return (cell == null) ? createCell(cellnum, Cell.CELL_TYPE_BLANK) : cell;
default:
throw new IllegalArgumentException("Illegal policy " + policy + " (" + policy.id + ")");
} }
if(policy == RETURN_BLANK_AS_NULL) {
if(cell == null) return cell;
if(cell.getCellType() == HSSFCell.CELL_TYPE_BLANK) {
return null;
}
return cell;
}
if(policy == CREATE_NULL_AS_BLANK) {
if(cell == null) {
return createCell(cellnum, HSSFCell.CELL_TYPE_BLANK);
}
return cell;
}
throw new IllegalArgumentException("Illegal policy " + policy + " (" + policy.id + ")");
} }
/** /**
* get the number of the first cell contained in this row. * 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. * @return short representing the first logical cell in the row, or -1 if the row does not contain any cells.
*/ */
@Override
public short getFirstCellNum() { public short getFirstCellNum() {
if (row.isEmpty()) { if (row.isEmpty()) {
return -1; return -1;
@ -403,6 +407,7 @@ public final class HSSFRow implements Row, Comparable<HSSFRow> {
* @return short representing the last logical cell in the row <b>PLUS ONE</b>, or -1 if the * @return short representing the last logical cell in the row <b>PLUS ONE</b>, or -1 if the
* row does not contain any cells. * row does not contain any cells.
*/ */
@Override
public short getLastCellNum() { public short getLastCellNum() {
if (row.isEmpty()) { if (row.isEmpty()) {
return -1; return -1;
@ -417,6 +422,7 @@ public final class HSSFRow implements Row, Comparable<HSSFRow> {
* @return int representing the number of defined cells in the row. * @return int representing the number of defined cells in the row.
*/ */
@Override
public int getPhysicalNumberOfCells() public int getPhysicalNumberOfCells()
{ {
int count=0; int count=0;
@ -433,6 +439,7 @@ public final class HSSFRow implements Row, Comparable<HSSFRow> {
* @param height rowheight or -1 for undefined (use sheet default) * @param height rowheight or -1 for undefined (use sheet default)
*/ */
@Override
public void setHeight(short height) public void setHeight(short height)
{ {
if(height == -1){ if(height == -1){
@ -448,6 +455,7 @@ public final class HSSFRow implements Row, Comparable<HSSFRow> {
* set whether or not to display this row with 0 height * set whether or not to display this row with 0 height
* @param zHeight height is zero or not. * @param zHeight height is zero or not.
*/ */
@Override
public void setZeroHeight(boolean zHeight) { public void setZeroHeight(boolean zHeight) {
row.setZeroHeight(zHeight); row.setZeroHeight(zHeight);
} }
@ -456,6 +464,7 @@ public final class HSSFRow implements Row, Comparable<HSSFRow> {
* get whether or not to display this row with 0 height * get whether or not to display this row with 0 height
* @return - zHeight height is zero or not. * @return - zHeight height is zero or not.
*/ */
@Override
public boolean getZeroHeight() { public boolean getZeroHeight() {
return row.getZeroHeight(); return row.getZeroHeight();
} }
@ -465,6 +474,7 @@ public final class HSSFRow implements Row, Comparable<HSSFRow> {
* @param height row height in points, <code>-1</code> means to use the default height * @param height row height in points, <code>-1</code> means to use the default height
*/ */
@Override
public void setHeightInPoints(float height) public void setHeightInPoints(float height)
{ {
if(height == -1){ if(height == -1){
@ -480,6 +490,7 @@ public final class HSSFRow implements Row, Comparable<HSSFRow> {
* @return rowheight or 0xff for undefined (use sheet default) * @return rowheight or 0xff for undefined (use sheet default)
*/ */
@Override
public short getHeight() public short getHeight()
{ {
short height = row.getHeight(); short height = row.getHeight();
@ -497,6 +508,7 @@ public final class HSSFRow implements Row, Comparable<HSSFRow> {
* @return rowheight or 0xff for undefined (use sheet default) * @return rowheight or 0xff for undefined (use sheet default)
*/ */
@Override
public float getHeightInPoints() public float getHeightInPoints()
{ {
return ((float)getHeight() / 20); return ((float)getHeight() / 20);
@ -553,6 +565,7 @@ public final class HSSFRow implements Row, Comparable<HSSFRow> {
* do have whole-row styles. For those that do, you * do have whole-row styles. For those that do, you
* can get the formatting from {@link #getRowStyle()} * can get the formatting from {@link #getRowStyle()}
*/ */
@Override
public boolean isFormatted() { public boolean isFormatted() {
return row.getFormatted(); return row.getFormatted();
} }
@ -561,6 +574,7 @@ public final class HSSFRow implements Row, Comparable<HSSFRow> {
* have one of these, so will return null. Call * have one of these, so will return null. Call
* {@link #isFormatted()} to check first. * {@link #isFormatted()} to check first.
*/ */
@Override
public HSSFCellStyle getRowStyle() { public HSSFCellStyle getRowStyle() {
if(!isFormatted()) { return null; } if(!isFormatted()) { return null; }
short styleIndex = row.getXFIndex(); short styleIndex = row.getXFIndex();
@ -577,6 +591,7 @@ public final class HSSFRow implements Row, Comparable<HSSFRow> {
/** /**
* Applies a whole-row cell styling to the row. * Applies a whole-row cell styling to the row.
*/ */
@Override
public void setRowStyle(CellStyle style) { public void setRowStyle(CellStyle style) {
setRowStyle((HSSFCellStyle)style); setRowStyle((HSSFCellStyle)style);
} }
@ -589,6 +604,7 @@ public final class HSSFRow implements Row, Comparable<HSSFRow> {
* As this only ever works on physically defined cells, * As this only ever works on physically defined cells,
* the {@link org.apache.poi.ss.usermodel.Row.MissingCellPolicy} has no effect. * the {@link org.apache.poi.ss.usermodel.Row.MissingCellPolicy} has no effect.
*/ */
@Override
public Iterator<Cell> cellIterator() public Iterator<Cell> cellIterator()
{ {
return new CellIterator(); return new CellIterator();
@ -597,6 +613,7 @@ public final class HSSFRow implements Row, Comparable<HSSFRow> {
* Alias for {@link #cellIterator} to allow * Alias for {@link #cellIterator} to allow
* foreach loops * foreach loops
*/ */
@Override
public Iterator<Cell> iterator() { public Iterator<Cell> iterator() {
return cellIterator(); return cellIterator();
} }
@ -613,11 +630,13 @@ public final class HSSFRow implements Row, Comparable<HSSFRow> {
findNext(); findNext();
} }
public boolean hasNext() { @Override
public boolean hasNext() {
return nextId<cells.length; return nextId<cells.length;
} }
public Cell next() { @Override
public Cell next() {
if (!hasNext()) if (!hasNext())
throw new NoSuchElementException("At last element"); throw new NoSuchElementException("At last element");
HSSFCell cell=cells[nextId]; HSSFCell cell=cells[nextId];
@ -626,7 +645,8 @@ public final class HSSFRow implements Row, Comparable<HSSFRow> {
return cell; return cell;
} }
public void remove() { @Override
public void remove() {
if (thisId == -1) if (thisId == -1)
throw new IllegalStateException("remove() called before next()"); throw new IllegalStateException("remove() called before next()");
cells[thisId]=null; cells[thisId]=null;

View File

@ -175,7 +175,7 @@ public final class HSSFWorkbook extends POIDocument implements org.apache.poi.ss
* blank cells when fetching from a row. * blank cells when fetching from a row.
* See {@link MissingCellPolicy} * See {@link MissingCellPolicy}
*/ */
private MissingCellPolicy missingCellPolicy = HSSFRow.RETURN_NULL_AND_BLANK; private MissingCellPolicy missingCellPolicy = MissingCellPolicy.RETURN_NULL_AND_BLANK;
private static POILogger log = POILogFactory.getLogger(HSSFWorkbook.class); private static POILogger log = POILogFactory.getLogger(HSSFWorkbook.class);
@ -888,6 +888,7 @@ public final class HSSFWorkbook extends POIDocument implements org.apache.poi.ss
* *
* @return an iterator of the sheets. * @return an iterator of the sheets.
*/ */
@Override
public Iterator<Sheet> sheetIterator() { public Iterator<Sheet> sheetIterator() {
Iterator<Sheet> result = new SheetIterator<Sheet>(); Iterator<Sheet> result = new SheetIterator<Sheet>();
return result; return result;
@ -897,6 +898,7 @@ public final class HSSFWorkbook extends POIDocument implements org.apache.poi.ss
* Alias for {@link #sheetIterator()} to allow * Alias for {@link #sheetIterator()} to allow
* foreach loops * foreach loops
*/ */
@Override
public Iterator<Sheet> iterator() { public Iterator<Sheet> iterator() {
return sheetIterator(); return sheetIterator();
} }
@ -1130,6 +1132,7 @@ public final class HSSFWorkbook extends POIDocument implements org.apache.poi.ss
* Finds a font that matches the one with the supplied attributes * Finds a font that matches the one with the supplied attributes
* @deprecated 3.15 beta 2. Use {@link #findFont(boolean, short, short, String, boolean, boolean, short, byte)} instead. * @deprecated 3.15 beta 2. Use {@link #findFont(boolean, short, short, String, boolean, boolean, short, byte)} instead.
*/ */
@Deprecated
@Override @Override
public HSSFFont findFont(short boldWeight, short color, short fontHeight, public HSSFFont findFont(short boldWeight, short color, short fontHeight,
String name, boolean italic, boolean strikeout, String name, boolean italic, boolean strikeout,
@ -1159,6 +1162,7 @@ public final class HSSFWorkbook extends POIDocument implements org.apache.poi.ss
/** /**
* Finds a font that matches the one with the supplied attributes * Finds a font that matches the one with the supplied attributes
*/ */
@Override
public HSSFFont findFont(boolean bold, short color, short fontHeight, public HSSFFont findFont(boolean bold, short color, short fontHeight,
String name, boolean italic, boolean strikeout, String name, boolean italic, boolean strikeout,
short typeOffset, byte underline) short typeOffset, byte underline)
@ -1756,7 +1760,7 @@ public final class HSSFWorkbook extends POIDocument implements org.apache.poi.ss
break; break;
} }
blipRecord.setRecordId((short) (EscherBitmapBlip.RECORD_ID_START + format)); blipRecord.setRecordId((short) (EscherBlipRecord.RECORD_ID_START + format));
switch (format) switch (format)
{ {
case PICTURE_TYPE_EMF: case PICTURE_TYPE_EMF:

View File

@ -32,7 +32,7 @@ public interface Row extends Iterable<Cell> {
* *
* @param column - the column number this cell represents * @param column - the column number this cell represents
* @return Cell a high level representation of the created cell. * @return Cell a high level representation of the created cell.
* @throws IllegalArgumentException if columnIndex < 0 or greater than the maximum number of supported columns * @throws IllegalArgumentException if columnIndex &lt; 0 or greater than the maximum number of supported columns
* (255 for *.xls, 1048576 for *.xlsx) * (255 for *.xls, 1048576 for *.xlsx)
*/ */
Cell createCell(int column); Cell createCell(int column);
@ -48,7 +48,7 @@ public interface Row extends Iterable<Cell> {
* @param column - the column number this cell represents * @param column - the column number this cell represents
* @param type - the cell's data type * @param type - the cell's data type
* @return Cell a high level representation of the created cell. * @return Cell a high level representation of the created cell.
* @throws IllegalArgumentException if columnIndex < 0 or greate than a maximum number of supported columns * @throws IllegalArgumentException if columnIndex &lt; 0 or greater than a maximum number of supported columns
* (255 for *.xls, 1048576 for *.xlsx) * (255 for *.xls, 1048576 for *.xlsx)
* @see Cell#CELL_TYPE_BLANK * @see Cell#CELL_TYPE_BLANK
* @see Cell#CELL_TYPE_BOOLEAN * @see Cell#CELL_TYPE_BOOLEAN
@ -70,7 +70,7 @@ public interface Row extends Iterable<Cell> {
* Set the row number of this row. * Set the row number of this row.
* *
* @param rowNum the row number (0-based) * @param rowNum the row number (0-based)
* @throws IllegalArgumentException if rowNum < 0 * @throws IllegalArgumentException if rowNum &lt; 0
*/ */
void setRowNum(int rowNum); void setRowNum(int rowNum);
@ -95,10 +95,7 @@ public interface Row extends Iterable<Cell> {
* Returns the cell at the given (0 based) index, with the specified {@link org.apache.poi.ss.usermodel.Row.MissingCellPolicy} * Returns the cell at the given (0 based) index, with the specified {@link org.apache.poi.ss.usermodel.Row.MissingCellPolicy}
* *
* @return the cell at the given (0 based) index * @return the cell at the given (0 based) index
* @throws IllegalArgumentException if cellnum < 0 or the specified MissingCellPolicy is invalid * @throws IllegalArgumentException if cellnum &lt; 0 or the specified MissingCellPolicy is invalid
* @see Row#RETURN_NULL_AND_BLANK
* @see Row#RETURN_BLANK_AS_NULL
* @see Row#CREATE_NULL_AS_BLANK
*/ */
Cell getCell(int cellnum, MissingCellPolicy policy); Cell getCell(int cellnum, MissingCellPolicy policy);
@ -221,22 +218,41 @@ public interface Row extends Iterable<Cell> {
* Used to specify the different possible policies * Used to specify the different possible policies
* if for the case of null and blank cells * if for the case of null and blank cells
*/ */
public static enum MissingCellPolicy { public enum MissingCellPolicy {
RETURN_NULL_AND_BLANK(), RETURN_NULL_AND_BLANK(1),
RETURN_BLANK_AS_NULL(), RETURN_BLANK_AS_NULL(2),
CREATE_NULL_AS_BLANK(); CREATE_NULL_AS_BLANK(3);
private int NEXT_ID = 1; /**
* @deprecated as of POI 3.15-beta2, scheduled for removal in 3.17 - the id has no function and will be removed
*/
@Deprecated
public final int id; public final int id;
private MissingCellPolicy() { private MissingCellPolicy(int id) {
this.id = NEXT_ID++; this.id = id;
} }
} }
/** Missing cells are returned as null, Blank cells are returned as normal */
/**
* Missing cells are returned as null, Blank cells are returned as normal
*
* @deprecated as of POI 3.15-beta2, scheduled for removal in 3.17 - use the MissingCellPolicy enum
**/
@Deprecated
public static final MissingCellPolicy RETURN_NULL_AND_BLANK = MissingCellPolicy.RETURN_NULL_AND_BLANK; public static final MissingCellPolicy RETURN_NULL_AND_BLANK = MissingCellPolicy.RETURN_NULL_AND_BLANK;
/** Missing cells and blank cells are returned as null */ /**
* Missing cells and blank cells are returned as null
*
* @deprecated as of POI 3.15-beta2, scheduled for removal in 3.17 - use the MissingCellPolicy enum
**/
@Deprecated
public static final MissingCellPolicy RETURN_BLANK_AS_NULL = MissingCellPolicy.RETURN_BLANK_AS_NULL; public static final MissingCellPolicy RETURN_BLANK_AS_NULL = MissingCellPolicy.RETURN_BLANK_AS_NULL;
/** A new, blank cell is created for missing cells. Blank cells are returned as normal */ /**
* A new, blank cell is created for missing cells. Blank cells are returned as normal
*
* @deprecated as of POI 3.15-beta2, scheduled for removal in 3.17 - use the MissingCellPolicy enum
**/
@Deprecated
public static final MissingCellPolicy CREATE_NULL_AS_BLANK = MissingCellPolicy.CREATE_NULL_AS_BLANK; public static final MissingCellPolicy CREATE_NULL_AS_BLANK = MissingCellPolicy.CREATE_NULL_AS_BLANK;
/** /**

View File

@ -135,48 +135,43 @@ public interface Sheet extends Iterable<Row> {
public boolean isRightToLeft(); public boolean isRightToLeft();
/** /**
* Set the width (in units of 1/256th of a character width) * Set the width (in units of 1/256th of a character width)<p>
* *
* <p>
* The maximum column width for an individual cell is 255 characters. * The maximum column width for an individual cell is 255 characters.
* This value represents the number of characters that can be displayed * This value represents the number of characters that can be displayed
* in a cell that is formatted with the standard font (first font in the workbook). * in a cell that is formatted with the standard font (first font in the workbook).<p>
* </p>
* *
* <p>
* Character width is defined as the maximum digit width * Character width is defined as the maximum digit width
* of the numbers <code>0, 1, 2, ... 9</code> as rendered * of the numbers <code>0, 1, 2, ... 9</code> as rendered
* using the default font (first font in the workbook). * using the default font (first font in the workbook).<p>
* <br/> *
* Unless you are using a very special font, the default character is '0' (zero), * Unless you are using a very special font, the default character is '0' (zero),
* this is true for Arial (default font font in HSSF) and Calibri (default font in XSSF) * this is true for Arial (default font font in HSSF) and Calibri (default font in XSSF)<p>
* </p>
* *
* <p>
* Please note, that the width set by this method includes 4 pixels of margin padding (two on each side), * Please note, that the width set by this method includes 4 pixels of margin padding (two on each side),
* plus 1 pixel padding for the gridlines (Section 3.3.1.12 of the OOXML spec). * plus 1 pixel padding for the gridlines (Section 3.3.1.12 of the OOXML spec).
* This results is a slightly less value of visible characters than passed to this method (approx. 1/2 of a character). * This results is a slightly less value of visible characters than passed to this method (approx. 1/2 of a character).<p>
* </p> *
* <p>
* To compute the actual number of visible characters, * To compute the actual number of visible characters,
* Excel uses the following formula (Section 3.3.1.12 of the OOXML spec): * Excel uses the following formula (Section 3.3.1.12 of the OOXML spec):<p>
* </p> *
* <code> * <code>
* width = Truncate([{Number of Visible Characters} * * width = Truncate([{Number of Visible Characters} *
* {Maximum Digit Width} + {5 pixel padding}]/{Maximum Digit Width}*256)/256 * {Maximum Digit Width} + {5 pixel padding}]/{Maximum Digit Width}*256)/256
* </code> * </code>
* <p>Using the Calibri font as an example, the maximum digit width of 11 point font size is 7 pixels (at 96 dpi). *
* If you set a column width to be eight characters wide, e.g. <code>setColumnWidth(columnIndex, 8*256)</code>, * Using the Calibri font as an example, the maximum digit width of 11 point font size is 7 pixels (at 96 dpi).
* then the actual value of visible characters (the value shown in Excel) is derived from the following equation: * If you set a column width to be eight characters wide, e.g. <code>setColumnWidth(columnIndex, 8*256)</code>,
* then the actual value of visible characters (the value shown in Excel) is derived from the following equation:
* <code> * <code>
Truncate([numChars*7+5]/7*256)/256 = 8; * Truncate([numChars*7+5]/7*256)/256 = 8;
* </code> * </code>
* *
* which gives <code>7.29</code>. * which gives <code>7.29</code>.
* *
* @param columnIndex - the column to set (0-based) * @param columnIndex - the column to set (0-based)
* @param width - the width in units of 1/256th of a character width * @param width - the width in units of 1/256th of a character width
* @throws IllegalArgumentException if width > 255*256 (the maximum column width in Excel is 255 characters) * @throws IllegalArgumentException if width &gt; 255*256 (the maximum column width in Excel is 255 characters)
*/ */
void setColumnWidth(int columnIndex, int width); void setColumnWidth(int columnIndex, int width);
@ -557,17 +552,17 @@ public interface Sheet extends Iterable<Row> {
PrintSetup getPrintSetup(); PrintSetup getPrintSetup();
/** /**
* Gets the user model for the default document header. * Gets the user model for the default document header.<p>
* <p/> *
* Note that XSSF offers more kinds of document headers than HSSF does * Note that XSSF offers more kinds of document headers than HSSF does
* </p> *
* @return the document header. Never <code>null</code> * @return the document header. Never <code>null</code>
*/ */
Header getHeader(); Header getHeader();
/** /**
* Gets the user model for the default document footer. * Gets the user model for the default document footer.<p>
* <p/> *
* Note that XSSF offers more kinds of document footers than HSSF does. * Note that XSSF offers more kinds of document footers than HSSF does.
* *
* @return the document footer. Never <code>null</code> * @return the document footer. Never <code>null</code>
@ -575,10 +570,10 @@ public interface Sheet extends Iterable<Row> {
Footer getFooter(); Footer getFooter();
/** /**
* Sets a flag indicating whether this sheet is selected. * Sets a flag indicating whether this sheet is selected.<p>
*<p> *
* Note: multiple sheets can be selected, but only one sheet can be active at one time. * Note: multiple sheets can be selected, but only one sheet can be active at one time.
*</p> *
* @param value <code>true</code> if this sheet is selected * @param value <code>true</code> if this sheet is selected
* @see Workbook#setActiveSheet(int) * @see Workbook#setActiveSheet(int)
*/ */
@ -603,7 +598,7 @@ public interface Sheet extends Iterable<Row> {
/** /**
* Answer whether protection is enabled or disabled * Answer whether protection is enabled or disabled
* *
* @return true => protection enabled; false => protection disabled * @return true =&gt; protection enabled; false =&gt; protection disabled
*/ */
boolean getProtect(); boolean getProtect();
@ -616,7 +611,7 @@ public interface Sheet extends Iterable<Row> {
/** /**
* Answer whether scenario protection is enabled or disabled * Answer whether scenario protection is enabled or disabled
* *
* @return true => protection enabled; false => protection disabled * @return true =&gt; protection enabled; false =&gt; protection disabled
*/ */
boolean getScenarioProtect(); boolean getScenarioProtect();
@ -629,11 +624,12 @@ public interface Sheet extends Iterable<Row> {
* @param denominator The denominator for the zoom magnification. * @param denominator The denominator for the zoom magnification.
* @deprecated 2015-11-23 (circa POI 3.14beta1). Use {@link #setZoom(int)} instead. * @deprecated 2015-11-23 (circa POI 3.14beta1). Use {@link #setZoom(int)} instead.
*/ */
@Deprecated
void setZoom(int numerator, int denominator); void setZoom(int numerator, int denominator);
/** /**
* Window zoom magnification for current view representing percent values. * Window zoom magnification for current view representing percent values.
* Valid values range from 10 to 400. Horizontal & Vertical scale together. * Valid values range from 10 to 400. Horizontal &amp; Vertical scale together.
* *
* For example: * For example:
* <pre> * <pre>
@ -949,6 +945,7 @@ public interface Sheet extends Iterable<Row> {
* @return cell comment or <code>null</code> if not found * @return cell comment or <code>null</code> if not found
* @deprecated as of 2015-11-23 (circa POI 3.14beta1). Use {@link #getCellComment(CellAddress)} instead. * @deprecated as of 2015-11-23 (circa POI 3.14beta1). Use {@link #getCellComment(CellAddress)} instead.
*/ */
@Deprecated
Comment getCellComment(int row, int column); Comment getCellComment(int row, int column);
/** /**
@ -1054,8 +1051,8 @@ public interface Sheet extends Iterable<Row> {
/** /**
* Gets the repeating rows used when printing the sheet, as found in * Gets the repeating rows used when printing the sheet, as found in
* File->PageSetup->Sheet. * File-&gt;PageSetup-&gt;Sheet.<p>
* <p/> *
* Repeating rows cover a range of contiguous rows, e.g.: * Repeating rows cover a range of contiguous rows, e.g.:
* <pre> * <pre>
* Sheet1!$1:$1 * Sheet1!$1:$1
@ -1063,8 +1060,8 @@ public interface Sheet extends Iterable<Row> {
* </pre> * </pre>
* The {@link CellRangeAddress} returned contains a column part which spans * The {@link CellRangeAddress} returned contains a column part which spans
* all columns, and a row part which specifies the contiguous range of * all columns, and a row part which specifies the contiguous range of
* repeating rows. * repeating rows.<p>
* <p/> *
* If the Sheet does not have any repeating rows defined, null is returned. * If the Sheet does not have any repeating rows defined, null is returned.
* *
* @return an {@link CellRangeAddress} containing the repeating rows for the * @return an {@link CellRangeAddress} containing the repeating rows for the
@ -1075,8 +1072,8 @@ public interface Sheet extends Iterable<Row> {
/** /**
* Gets the repeating columns used when printing the sheet, as found in * Gets the repeating columns used when printing the sheet, as found in
* File->PageSetup->Sheet. * File-&gt;PageSetup-&gt;Sheet.<p>
* <p/> *
* Repeating columns cover a range of contiguous columns, e.g.: * Repeating columns cover a range of contiguous columns, e.g.:
* <pre> * <pre>
* Sheet1!$A:$A * Sheet1!$A:$A
@ -1084,8 +1081,8 @@ public interface Sheet extends Iterable<Row> {
* </pre> * </pre>
* The {@link CellRangeAddress} returned contains a row part which spans all * The {@link CellRangeAddress} returned contains a row part which spans all
* rows, and a column part which specifies the contiguous range of * rows, and a column part which specifies the contiguous range of
* repeating columns. * repeating columns.<p>
* <p/> *
* If the Sheet does not have any repeating columns defined, null is * If the Sheet does not have any repeating columns defined, null is
* returned. * returned.
* *
@ -1097,8 +1094,8 @@ public interface Sheet extends Iterable<Row> {
/** /**
* Sets the repeating rows used when printing the sheet, as found in * Sets the repeating rows used when printing the sheet, as found in
* File->PageSetup->Sheet. * File-&gt;PageSetup-&gt;Sheet.<p>
* <p/> *
* Repeating rows cover a range of contiguous rows, e.g.: * Repeating rows cover a range of contiguous rows, e.g.:
* <pre> * <pre>
* Sheet1!$1:$1 * Sheet1!$1:$1
@ -1121,8 +1118,8 @@ public interface Sheet extends Iterable<Row> {
/** /**
* Sets the repeating columns used when printing the sheet, as found in * Sets the repeating columns used when printing the sheet, as found in
* File->PageSetup->Sheet. * File-&gt;PageSetup-&gt;Sheet.<p>
* <p/> *
* Repeating columns cover a range of contiguous columns, e.g.: * Repeating columns cover a range of contiguous columns, e.g.:
* <pre> * <pre>
* Sheet1!$A:$A * Sheet1!$A:$A

View File

@ -32,9 +32,7 @@ import org.apache.poi.util.Internal;
/** /**
* Streaming version of XSSFRow implementing the "BigGridDemo" strategy. * Streaming version of XSSFRow implementing the "BigGridDemo" strategy.
* */
* @author Alex Geller, Four J's Development Tools
*/
public class SXSSFRow implements Row, Comparable<SXSSFRow> public class SXSSFRow implements Row, Comparable<SXSSFRow>
{ {
private static final Boolean UNDEFINED = null; private static final Boolean UNDEFINED = null;
@ -55,6 +53,7 @@ public class SXSSFRow implements Row, Comparable<SXSSFRow>
* @param initialSize - no longer needed * @param initialSize - no longer needed
* @deprecated 2015-11-30 (circa POI 3.14beta1). Use {@link #SXSSFRow(SXSSFSheet)} instead. * @deprecated 2015-11-30 (circa POI 3.14beta1). Use {@link #SXSSFRow(SXSSFSheet)} instead.
*/ */
@Deprecated
public SXSSFRow(SXSSFSheet sheet, @SuppressWarnings("UnusedParameters") int initialSize) public SXSSFRow(SXSSFSheet sheet, @SuppressWarnings("UnusedParameters") int initialSize)
{ {
this(sheet); this(sheet);
@ -74,6 +73,7 @@ public class SXSSFRow implements Row, Comparable<SXSSFRow>
return _height!=-1; return _height!=-1;
} }
@Override
public int getOutlineLevel(){ public int getOutlineLevel(){
return _outlineLevel; return _outlineLevel;
} }
@ -239,38 +239,24 @@ public class SXSSFRow implements Row, Comparable<SXSSFRow>
* *
* @return the cell at the given (0 based) index * @return the cell at the given (0 based) index
* @throws IllegalArgumentException if cellnum < 0 or the specified MissingCellPolicy is invalid * @throws IllegalArgumentException if cellnum < 0 or the specified MissingCellPolicy is invalid
* @see Row#RETURN_NULL_AND_BLANK
* @see Row#RETURN_BLANK_AS_NULL
* @see Row#CREATE_NULL_AS_BLANK
*/ */
@Override @Override
public SXSSFCell getCell(int cellnum, MissingCellPolicy policy) public SXSSFCell getCell(int cellnum, MissingCellPolicy policy)
{ {
checkBounds(cellnum); checkBounds(cellnum);
// FIXME: replace with switch(enum)
final SXSSFCell cell = _cells.get(cellnum); final SXSSFCell cell = _cells.get(cellnum);
if (policy == RETURN_NULL_AND_BLANK) switch (policy) {
{ case RETURN_NULL_AND_BLANK:
return cell; return cell;
case RETURN_BLANK_AS_NULL:
boolean isBlank = (cell != null && cell.getCellType() == Cell.CELL_TYPE_BLANK);
return (isBlank) ? null : cell;
case CREATE_NULL_AS_BLANK:
return (cell == null) ? createCell(cellnum, Cell.CELL_TYPE_BLANK) : cell;
default:
throw new IllegalArgumentException("Illegal policy " + policy + " (" + policy.id + ")");
} }
else if (policy == RETURN_BLANK_AS_NULL)
{
if (cell == null || cell.getCellType() == Cell.CELL_TYPE_BLANK)
{
return null;
}
return cell;
}
else if (policy == CREATE_NULL_AS_BLANK)
{
if (cell == null)
{
return createCell(cellnum, Cell.CELL_TYPE_BLANK);
}
return cell;
}
throw new IllegalArgumentException("Illegal policy " + policy + " (" + policy.id + ")");
} }
/** /**

View File

@ -38,7 +38,7 @@ import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.FormulaError; import org.apache.poi.ss.usermodel.FormulaError;
import org.apache.poi.ss.usermodel.Hyperlink; import org.apache.poi.ss.usermodel.Hyperlink;
import org.apache.poi.ss.usermodel.RichTextString; import org.apache.poi.ss.usermodel.RichTextString;
import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Row.MissingCellPolicy;
import org.apache.poi.ss.util.CellAddress; import org.apache.poi.ss.util.CellAddress;
import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.ss.util.CellReference; import org.apache.poi.ss.util.CellReference;
@ -112,7 +112,7 @@ public final class XSSFCell implements Cell {
} else { } else {
int prevNum = row.getLastCellNum(); int prevNum = row.getLastCellNum();
if(prevNum != -1){ if(prevNum != -1){
_cellNum = row.getCell(prevNum-1, Row.RETURN_NULL_AND_BLANK).getColumnIndex() + 1; _cellNum = row.getCell(prevNum-1, MissingCellPolicy.RETURN_NULL_AND_BLANK).getColumnIndex() + 1;
} }
} }
_sharedStringSource = row.getSheet().getWorkbook().getSharedStringSource(); _sharedStringSource = row.getSheet().getWorkbook().getSharedStringSource();
@ -551,6 +551,7 @@ public final class XSSFCell implements Cell {
cellFormula.setRef(range.formatAsString()); cellFormula.setRef(range.formatAsString());
} }
@SuppressWarnings("resource")
private void setFormula(String formula, int formulaType) { private void setFormula(String formula, int formulaType) {
XSSFWorkbook wb = _row.getSheet().getWorkbook(); XSSFWorkbook wb = _row.getSheet().getWorkbook();
if (formula == null) { if (formula == null) {

View File

@ -94,6 +94,7 @@ public class XSSFRow implements Row, Comparable<XSSFRow> {
* *
* @return the XSSFSheet that owns this row * @return the XSSFSheet that owns this row
*/ */
@Override
public XSSFSheet getSheet() { public XSSFSheet getSheet() {
return this._sheet; return this._sheet;
} }
@ -109,6 +110,7 @@ public class XSSFRow implements Row, Comparable<XSSFRow> {
* *
* @return an iterator over cells in this row. * @return an iterator over cells in this row.
*/ */
@Override
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public Iterator<Cell> cellIterator() { public Iterator<Cell> cellIterator() {
return (Iterator<Cell>)(Iterator<? extends Cell>)_cells.values().iterator(); return (Iterator<Cell>)(Iterator<? extends Cell>)_cells.values().iterator();
@ -124,6 +126,7 @@ public class XSSFRow implements Row, Comparable<XSSFRow> {
* *
* @return an iterator over cells in this row. * @return an iterator over cells in this row.
*/ */
@Override
public Iterator<Cell> iterator() { public Iterator<Cell> iterator() {
return cellIterator(); return cellIterator();
} }
@ -189,6 +192,7 @@ public class XSSFRow implements Row, Comparable<XSSFRow> {
* @throws IllegalArgumentException if columnIndex < 0 or greater than 16384, * @throws IllegalArgumentException if columnIndex < 0 or greater than 16384,
* the maximum number of columns supported by the SpreadsheetML format (.xlsx) * the maximum number of columns supported by the SpreadsheetML format (.xlsx)
*/ */
@Override
public XSSFCell createCell(int columnIndex) { public XSSFCell createCell(int columnIndex) {
return createCell(columnIndex, Cell.CELL_TYPE_BLANK); return createCell(columnIndex, Cell.CELL_TYPE_BLANK);
} }
@ -208,6 +212,7 @@ public class XSSFRow implements Row, Comparable<XSSFRow> {
* @see Cell#CELL_TYPE_NUMERIC * @see Cell#CELL_TYPE_NUMERIC
* @see Cell#CELL_TYPE_STRING * @see Cell#CELL_TYPE_STRING
*/ */
@Override
public XSSFCell createCell(int columnIndex, int type) { public XSSFCell createCell(int columnIndex, int type) {
// Performance optimization for bug 57840: explicit boxing is slightly faster than auto-unboxing, though may use more memory // Performance optimization for bug 57840: explicit boxing is slightly faster than auto-unboxing, though may use more memory
final Integer colI = new Integer(columnIndex); // NOSONAR final Integer colI = new Integer(columnIndex); // NOSONAR
@ -234,6 +239,7 @@ public class XSSFRow implements Row, Comparable<XSSFRow> {
* *
* @return the cell at the given (0 based) index * @return the cell at the given (0 based) index
*/ */
@Override
public XSSFCell getCell(int cellnum) { public XSSFCell getCell(int cellnum) {
return getCell(cellnum, _sheet.getWorkbook().getMissingCellPolicy()); return getCell(cellnum, _sheet.getWorkbook().getMissingCellPolicy());
} }
@ -242,34 +248,26 @@ public class XSSFRow implements Row, Comparable<XSSFRow> {
* Returns the cell at the given (0 based) index, with the specified {@link org.apache.poi.ss.usermodel.Row.MissingCellPolicy} * Returns the cell at the given (0 based) index, with the specified {@link org.apache.poi.ss.usermodel.Row.MissingCellPolicy}
* *
* @return the cell at the given (0 based) index * @return the cell at the given (0 based) index
* @throws IllegalArgumentException if cellnum < 0 or the specified MissingCellPolicy is invalid * @throws IllegalArgumentException if cellnum &lt; 0 or the specified MissingCellPolicy is invalid
* @see Row#RETURN_NULL_AND_BLANK
* @see Row#RETURN_BLANK_AS_NULL
* @see Row#CREATE_NULL_AS_BLANK
*/ */
@Override
public XSSFCell getCell(int cellnum, MissingCellPolicy policy) { public XSSFCell getCell(int cellnum, MissingCellPolicy policy) {
if(cellnum < 0) throw new IllegalArgumentException("Cell index must be >= 0"); if(cellnum < 0) throw new IllegalArgumentException("Cell index must be >= 0");
// Performance optimization for bug 57840: explicit boxing is slightly faster than auto-unboxing, though may use more memory // Performance optimization for bug 57840: explicit boxing is slightly faster than auto-unboxing, though may use more memory
final Integer colI = new Integer(cellnum); // NOSONAR final Integer colI = new Integer(cellnum); // NOSONAR
XSSFCell cell = _cells.get(colI); XSSFCell cell = _cells.get(colI);
if(policy == RETURN_NULL_AND_BLANK) { switch (policy) {
return cell; case RETURN_NULL_AND_BLANK:
} return cell;
if(policy == RETURN_BLANK_AS_NULL) { case RETURN_BLANK_AS_NULL:
if(cell == null) return cell; boolean isBlank = (cell != null && cell.getCellType() == Cell.CELL_TYPE_BLANK);
if(cell.getCellType() == Cell.CELL_TYPE_BLANK) { return (isBlank) ? null : cell;
return null; case CREATE_NULL_AS_BLANK:
} return (cell == null) ? createCell(cellnum, Cell.CELL_TYPE_BLANK) : cell;
return cell; default:
} throw new IllegalArgumentException("Illegal policy " + policy + " (" + policy.id + ")");
if(policy == CREATE_NULL_AS_BLANK) { }
if(cell == null) {
return createCell((short)cellnum, Cell.CELL_TYPE_BLANK);
}
return cell;
}
throw new IllegalArgumentException("Illegal policy " + policy + " (" + policy.id + ")");
} }
/** /**
@ -278,6 +276,7 @@ public class XSSFRow implements Row, Comparable<XSSFRow> {
* @return short representing the first logical cell in the row, * @return short representing the first logical cell in the row,
* or -1 if the row does not contain any cells. * or -1 if the row does not contain any cells.
*/ */
@Override
public short getFirstCellNum() { public short getFirstCellNum() {
return (short)(_cells.size() == 0 ? -1 : _cells.firstKey()); return (short)(_cells.size() == 0 ? -1 : _cells.firstKey());
} }
@ -301,6 +300,7 @@ public class XSSFRow implements Row, Comparable<XSSFRow> {
* @return short representing the last logical cell in the 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. * or -1 if the row does not contain any cells.
*/ */
@Override
public short getLastCellNum() { public short getLastCellNum() {
return (short)(_cells.size() == 0 ? -1 : (_cells.lastKey() + 1)); return (short)(_cells.size() == 0 ? -1 : (_cells.lastKey() + 1));
} }
@ -311,6 +311,7 @@ public class XSSFRow implements Row, Comparable<XSSFRow> {
* *
* @return row height measured in twips (1/20th of a point) * @return row height measured in twips (1/20th of a point)
*/ */
@Override
public short getHeight() { public short getHeight() {
return (short)(getHeightInPoints()*20); return (short)(getHeightInPoints()*20);
} }
@ -322,6 +323,7 @@ public class XSSFRow implements Row, Comparable<XSSFRow> {
* @return row height measured in point size * @return row height measured in point size
* @see org.apache.poi.xssf.usermodel.XSSFSheet#getDefaultRowHeightInPoints() * @see org.apache.poi.xssf.usermodel.XSSFSheet#getDefaultRowHeightInPoints()
*/ */
@Override
public float getHeightInPoints() { public float getHeightInPoints() {
if (this._row.isSetHt()) { if (this._row.isSetHt()) {
return (float) this._row.getHt(); return (float) this._row.getHt();
@ -334,6 +336,7 @@ public class XSSFRow implements Row, Comparable<XSSFRow> {
* *
* @param height the height in "twips" or 1/20th of a point. <code>-1</code> resets to the default height * @param height the height in "twips" or 1/20th of a point. <code>-1</code> resets to the default height
*/ */
@Override
public void setHeight(short height) { public void setHeight(short height) {
if (height == -1) { if (height == -1) {
if (_row.isSetHt()) _row.unsetHt(); if (_row.isSetHt()) _row.unsetHt();
@ -350,6 +353,7 @@ public class XSSFRow implements Row, Comparable<XSSFRow> {
* *
* @param height the height in points. <code>-1</code> resets to the default height * @param height the height in points. <code>-1</code> resets to the default height
*/ */
@Override
public void setHeightInPoints(float height) { public void setHeightInPoints(float height) {
setHeight((short)(height == -1 ? -1 : (height*20))); setHeight((short)(height == -1 ? -1 : (height*20)));
} }
@ -360,6 +364,7 @@ public class XSSFRow implements Row, Comparable<XSSFRow> {
* *
* @return int representing the number of defined cells in the row. * @return int representing the number of defined cells in the row.
*/ */
@Override
public int getPhysicalNumberOfCells() { public int getPhysicalNumberOfCells() {
return _cells.size(); return _cells.size();
} }
@ -369,6 +374,7 @@ public class XSSFRow implements Row, Comparable<XSSFRow> {
* *
* @return the row number (0 based) * @return the row number (0 based)
*/ */
@Override
public int getRowNum() { public int getRowNum() {
return (int) (_row.getR() - 1); return (int) (_row.getR() - 1);
} }
@ -379,6 +385,7 @@ public class XSSFRow implements Row, Comparable<XSSFRow> {
* @param rowIndex the row number (0-based) * @param rowIndex the row number (0-based)
* @throws IllegalArgumentException if rowNum < 0 or greater than 1048575 * @throws IllegalArgumentException if rowNum < 0 or greater than 1048575
*/ */
@Override
public void setRowNum(int rowIndex) { public void setRowNum(int rowIndex) {
int maxrow = SpreadsheetVersion.EXCEL2007.getLastRowIndex(); int maxrow = SpreadsheetVersion.EXCEL2007.getLastRowIndex();
if (rowIndex < 0 || rowIndex > maxrow) { if (rowIndex < 0 || rowIndex > maxrow) {
@ -393,6 +400,7 @@ public class XSSFRow implements Row, Comparable<XSSFRow> {
* *
* @return - height is zero or not. * @return - height is zero or not.
*/ */
@Override
public boolean getZeroHeight() { public boolean getZeroHeight() {
return this._row.getHidden(); return this._row.getHidden();
} }
@ -402,6 +410,7 @@ public class XSSFRow implements Row, Comparable<XSSFRow> {
* *
* @param height height is zero or not. * @param height height is zero or not.
*/ */
@Override
public void setZeroHeight(boolean height) { public void setZeroHeight(boolean height) {
this._row.setHidden(height); this._row.setHidden(height);
@ -412,6 +421,7 @@ public class XSSFRow implements Row, Comparable<XSSFRow> {
* do have whole-row styles. For those that do, you * do have whole-row styles. For those that do, you
* can get the formatting from {@link #getRowStyle()} * can get the formatting from {@link #getRowStyle()}
*/ */
@Override
public boolean isFormatted() { public boolean isFormatted() {
return _row.isSetS(); return _row.isSetS();
} }
@ -420,6 +430,7 @@ public class XSSFRow implements Row, Comparable<XSSFRow> {
* have one of these, so will return null. Call * have one of these, so will return null. Call
* {@link #isFormatted()} to check first. * {@link #isFormatted()} to check first.
*/ */
@Override
public XSSFCellStyle getRowStyle() { public XSSFCellStyle getRowStyle() {
if(!isFormatted()) return null; if(!isFormatted()) return null;
@ -436,6 +447,7 @@ public class XSSFRow implements Row, Comparable<XSSFRow> {
* If the value is null then the style information is removed, * If the value is null then the style information is removed,
* causing the cell to used the default workbook style. * causing the cell to used the default workbook style.
*/ */
@Override
public void setRowStyle(CellStyle style) { public void setRowStyle(CellStyle style) {
if(style == null) { if(style == null) {
if(_row.isSetS()) { if(_row.isSetS()) {
@ -459,6 +471,7 @@ public class XSSFRow implements Row, Comparable<XSSFRow> {
* *
* @param cell the cell to remove * @param cell the cell to remove
*/ */
@Override
public void removeCell(Cell cell) { public void removeCell(Cell cell) {
if (cell.getRow() != this) { if (cell.getRow() != this) {
throw new IllegalArgumentException("Specified cell does not belong to this row"); throw new IllegalArgumentException("Specified cell does not belong to this row");
@ -640,6 +653,7 @@ public class XSSFRow implements Row, Comparable<XSSFRow> {
} }
} }
@Override
public int getOutlineLevel() { public int getOutlineLevel() {
return _row.getOutlineLevel(); return _row.getOutlineLevel();
} }

View File

@ -190,7 +190,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook {
* blank cells when fetching from a row. * blank cells when fetching from a row.
* See {@link org.apache.poi.ss.usermodel.Row.MissingCellPolicy} * See {@link org.apache.poi.ss.usermodel.Row.MissingCellPolicy}
*/ */
private MissingCellPolicy _missingCellPolicy = Row.RETURN_NULL_AND_BLANK; private MissingCellPolicy _missingCellPolicy = MissingCellPolicy.RETURN_NULL_AND_BLANK;
/** /**
* array of pictures for this workbook * array of pictures for this workbook
@ -872,6 +872,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook {
* Finds a font that matches the one with the supplied attributes * Finds a font that matches the one with the supplied attributes
* @deprecated POI 3.15. Use {@link #findFont(boolean, short, short, String, boolean, boolean, short, byte)} instead. * @deprecated POI 3.15. Use {@link #findFont(boolean, short, short, String, boolean, boolean, short, byte)} instead.
*/ */
@Deprecated
@Override @Override
public XSSFFont findFont(short boldWeight, short color, short fontHeight, String name, boolean italic, boolean strikeout, short typeOffset, byte underline) { public XSSFFont findFont(short boldWeight, short color, short fontHeight, String name, boolean italic, boolean strikeout, short typeOffset, byte underline) {
return stylesSource.findFont(boldWeight, color, fontHeight, name, italic, strikeout, typeOffset, underline); return stylesSource.findFont(boldWeight, color, fontHeight, name, italic, strikeout, typeOffset, underline);
@ -921,6 +922,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook {
* @param idx index within the set of styles * @param idx index within the set of styles
* @return XSSFCellStyle object at the index * @return XSSFCellStyle object at the index
*/ */
@Override
public XSSFCellStyle getCellStyleAt(int idx) { public XSSFCellStyle getCellStyleAt(int idx) {
return stylesSource.getStyleAt(idx); return stylesSource.getStyleAt(idx);
} }
@ -995,6 +997,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook {
* *
* @return count of cell styles * @return count of cell styles
*/ */
@Override
public int getNumCellStyles() { public int getNumCellStyles() {
return stylesSource.getNumCellStyles(); return stylesSource.getNumCellStyles();
} }
@ -1127,6 +1130,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook {
* *
* @return an iterator of the sheets. * @return an iterator of the sheets.
*/ */
@Override
public Iterator<Sheet> sheetIterator() { public Iterator<Sheet> sheetIterator() {
return new SheetIterator<Sheet>(); return new SheetIterator<Sheet>();
} }
@ -1950,6 +1954,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook {
* @param name The name the workbook will be referenced as in formulas * @param name The name the workbook will be referenced as in formulas
* @param workbook The open workbook to fetch the link required information from * @param workbook The open workbook to fetch the link required information from
*/ */
@Override
@NotImplemented @NotImplemented
public int linkExternalWorkbook(String name, Workbook workbook) { public int linkExternalWorkbook(String name, Workbook workbook) {
throw new RuntimeException("Not Implemented - see bug #57184"); throw new RuntimeException("Not Implemented - see bug #57184");

View File

@ -30,6 +30,7 @@ import java.util.List;
import org.apache.poi.hssf.HSSFITestDataProvider; import org.apache.poi.hssf.HSSFITestDataProvider;
import org.apache.poi.ss.SpreadsheetVersion; import org.apache.poi.ss.SpreadsheetVersion;
import org.apache.poi.ss.usermodel.BaseTestXCell; import org.apache.poi.ss.usermodel.BaseTestXCell;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellCopyPolicy; import org.apache.poi.ss.usermodel.CellCopyPolicy;
import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.CellStyle;
@ -40,6 +41,7 @@ import org.apache.poi.ss.usermodel.Hyperlink;
import org.apache.poi.ss.usermodel.IndexedColors; import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.RichTextString; import org.apache.poi.ss.usermodel.RichTextString;
import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Row.MissingCellPolicy;
import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.ss.util.CellRangeAddress;
@ -52,9 +54,6 @@ import org.junit.Test;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCell; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCell;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STCellType; import org.openxmlformats.schemas.spreadsheetml.x2006.main.STCellType;
/**
* @author Yegor Kozlov
*/
public final class TestXSSFCell extends BaseTestXCell { public final class TestXSSFCell extends BaseTestXCell {
public TestXSSFCell() { public TestXSSFCell() {
@ -152,7 +151,7 @@ public final class TestXSSFCell extends BaseTestXCell {
CTCell ctCell = cell.getCTCell(); //low-level bean holding cell's xml CTCell ctCell = cell.getCTCell(); //low-level bean holding cell's xml
cell.setCellFormula("A2"); cell.setCellFormula("A2");
assertEquals(XSSFCell.CELL_TYPE_FORMULA, cell.getCellType()); assertEquals(Cell.CELL_TYPE_FORMULA, cell.getCellType());
assertEquals("A2", cell.getCellFormula()); assertEquals("A2", cell.getCellFormula());
//the value is not set and cell's type='N' which means blank //the value is not set and cell's type='N' which means blank
assertEquals(STCellType.N, ctCell.getT()); assertEquals(STCellType.N, ctCell.getT());
@ -160,7 +159,7 @@ public final class TestXSSFCell extends BaseTestXCell {
//set cached formula value //set cached formula value
cell.setCellValue("t='str'"); cell.setCellValue("t='str'");
//we are still of 'formula' type //we are still of 'formula' type
assertEquals(XSSFCell.CELL_TYPE_FORMULA, cell.getCellType()); assertEquals(Cell.CELL_TYPE_FORMULA, cell.getCellType());
assertEquals("A2", cell.getCellFormula()); assertEquals("A2", cell.getCellFormula());
//cached formula value is set and cell's type='STR' //cached formula value is set and cell's type='STR'
assertEquals(STCellType.STR, ctCell.getT()); assertEquals(STCellType.STR, ctCell.getT());
@ -168,14 +167,14 @@ public final class TestXSSFCell extends BaseTestXCell {
//now remove the formula, the cached formula result remains //now remove the formula, the cached formula result remains
cell.setCellFormula(null); cell.setCellFormula(null);
assertEquals(XSSFCell.CELL_TYPE_STRING, cell.getCellType()); assertEquals(Cell.CELL_TYPE_STRING, cell.getCellType());
assertEquals(STCellType.STR, ctCell.getT()); assertEquals(STCellType.STR, ctCell.getT());
//the line below failed prior to fix of Bug #47889 //the line below failed prior to fix of Bug #47889
assertEquals("t='str'", cell.getStringCellValue()); assertEquals("t='str'", cell.getStringCellValue());
//revert to a blank cell //revert to a blank cell
cell.setCellValue((String)null); cell.setCellValue((String)null);
assertEquals(XSSFCell.CELL_TYPE_BLANK, cell.getCellType()); assertEquals(Cell.CELL_TYPE_BLANK, cell.getCellType());
assertEquals(STCellType.N, ctCell.getT()); assertEquals(STCellType.N, ctCell.getT());
assertEquals("", cell.getStringCellValue()); assertEquals("", cell.getStringCellValue());
} finally { } finally {
@ -195,7 +194,7 @@ public final class TestXSSFCell extends BaseTestXCell {
//try a string cell //try a string cell
cell = sh.getRow(0).getCell(0); cell = sh.getRow(0).getCell(0);
assertEquals(XSSFCell.CELL_TYPE_STRING, cell.getCellType()); assertEquals(Cell.CELL_TYPE_STRING, cell.getCellType());
assertEquals("a", cell.getStringCellValue()); assertEquals("a", cell.getStringCellValue());
assertEquals("a", cell.toString()); assertEquals("a", cell.toString());
//Gnumeric produces spreadsheets without styles //Gnumeric produces spreadsheets without styles
@ -204,7 +203,7 @@ public final class TestXSSFCell extends BaseTestXCell {
//try a numeric cell //try a numeric cell
cell = sh.getRow(1).getCell(0); cell = sh.getRow(1).getCell(0);
assertEquals(XSSFCell.CELL_TYPE_NUMERIC, cell.getCellType()); assertEquals(Cell.CELL_TYPE_NUMERIC, cell.getCellType());
assertEquals(1.0, cell.getNumericCellValue(), 0); assertEquals(1.0, cell.getNumericCellValue(), 0);
assertEquals("1.0", cell.toString()); assertEquals("1.0", cell.toString());
//Gnumeric produces spreadsheets without styles //Gnumeric produces spreadsheets without styles
@ -417,7 +416,7 @@ public final class TestXSSFCell extends BaseTestXCell {
public void testBug56644ReturnNull() throws IOException { public void testBug56644ReturnNull() throws IOException {
Workbook wb = XSSFTestDataSamples.openSampleWorkbook("56644.xlsx"); Workbook wb = XSSFTestDataSamples.openSampleWorkbook("56644.xlsx");
try { try {
wb.setMissingCellPolicy(Row.RETURN_BLANK_AS_NULL); wb.setMissingCellPolicy(MissingCellPolicy.RETURN_BLANK_AS_NULL);
Sheet sheet = wb.getSheet("samplelist"); Sheet sheet = wb.getSheet("samplelist");
Row row = sheet.getRow(20); Row row = sheet.getRow(20);
row.createCell(2); row.createCell(2);
@ -430,7 +429,7 @@ public final class TestXSSFCell extends BaseTestXCell {
public void testBug56644ReturnBlank() throws IOException { public void testBug56644ReturnBlank() throws IOException {
Workbook wb = XSSFTestDataSamples.openSampleWorkbook("56644.xlsx"); Workbook wb = XSSFTestDataSamples.openSampleWorkbook("56644.xlsx");
try { try {
wb.setMissingCellPolicy(Row.RETURN_NULL_AND_BLANK); wb.setMissingCellPolicy(MissingCellPolicy.RETURN_NULL_AND_BLANK);
Sheet sheet = wb.getSheet("samplelist"); Sheet sheet = wb.getSheet("samplelist");
Row row = sheet.getRow(20); Row row = sheet.getRow(20);
row.createCell(2); row.createCell(2);
@ -443,7 +442,7 @@ public final class TestXSSFCell extends BaseTestXCell {
public void testBug56644CreateBlank() throws IOException { public void testBug56644CreateBlank() throws IOException {
Workbook wb = XSSFTestDataSamples.openSampleWorkbook("56644.xlsx"); Workbook wb = XSSFTestDataSamples.openSampleWorkbook("56644.xlsx");
try { try {
wb.setMissingCellPolicy(Row.CREATE_NULL_AS_BLANK); wb.setMissingCellPolicy(MissingCellPolicy.CREATE_NULL_AS_BLANK);
Sheet sheet = wb.getSheet("samplelist"); Sheet sheet = wb.getSheet("samplelist");
Row row = sheet.getRow(20); Row row = sheet.getRow(20);
row.createCell(2); row.createCell(2);
@ -565,7 +564,7 @@ public final class TestXSSFCell extends BaseTestXCell {
final CreationHelper createHelper = wb.getCreationHelper(); final CreationHelper createHelper = wb.getCreationHelper();
srcCell.setCellValue("URL LINK"); srcCell.setCellValue("URL LINK");
Hyperlink link = createHelper.createHyperlink(Hyperlink.LINK_URL); Hyperlink link = createHelper.createHyperlink(org.apache.poi.common.usermodel.Hyperlink.LINK_URL);
link.setAddress("http://poi.apache.org/"); link.setAddress("http://poi.apache.org/");
srcCell.setHyperlink(link); srcCell.setHyperlink(link);
@ -602,7 +601,7 @@ public final class TestXSSFCell extends BaseTestXCell {
final CreationHelper createHelper = wb.getCreationHelper(); final CreationHelper createHelper = wb.getCreationHelper();
srcCell.setCellValue("URL LINK"); srcCell.setCellValue("URL LINK");
Hyperlink link = createHelper.createHyperlink(Hyperlink.LINK_URL); Hyperlink link = createHelper.createHyperlink(org.apache.poi.common.usermodel.Hyperlink.LINK_URL);
link.setAddress("http://poi.apache.org/"); link.setAddress("http://poi.apache.org/");
destCell.setHyperlink(link); destCell.setHyperlink(link);
@ -657,7 +656,7 @@ public final class TestXSSFCell extends BaseTestXCell {
srcCell.setCellFormula("2+3"); srcCell.setCellFormula("2+3");
final CellStyle style = wb.createCellStyle(); final CellStyle style = wb.createCellStyle();
style.setBorderTop(CellStyle.BORDER_THICK); style.setBorderTop(BorderStyle.THICK);
style.setFillBackgroundColor((short) 5); style.setFillBackgroundColor((short) 5);
srcCell.setCellStyle(style); srcCell.setCellStyle(style);

View File

@ -59,6 +59,7 @@ import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font; import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.RichTextString; import org.apache.poi.ss.usermodel.RichTextString;
import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Row.MissingCellPolicy;
import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory; import org.apache.poi.ss.usermodel.WorkbookFactory;
@ -1036,26 +1037,26 @@ public final class TestXSSFWorkbook extends BaseTestXWorkbook {
// read-only mode works! // read-only mode works!
Workbook workbook = WorkbookFactory.create(OPCPackage.open(file, PackageAccess.READ)); Workbook workbook = WorkbookFactory.create(OPCPackage.open(file, PackageAccess.READ));
Date dateAct = workbook.getSheetAt(0).getRow(0).getCell(0, Row.CREATE_NULL_AS_BLANK).getDateCellValue(); Date dateAct = workbook.getSheetAt(0).getRow(0).getCell(0, MissingCellPolicy.CREATE_NULL_AS_BLANK).getDateCellValue();
assertEquals(dateExp, dateAct); assertEquals(dateExp, dateAct);
workbook.close(); workbook.close();
workbook = null; workbook = null;
workbook = WorkbookFactory.create(OPCPackage.open(file, PackageAccess.READ)); workbook = WorkbookFactory.create(OPCPackage.open(file, PackageAccess.READ));
dateAct = workbook.getSheetAt(0).getRow(0).getCell(0, Row.CREATE_NULL_AS_BLANK).getDateCellValue(); dateAct = workbook.getSheetAt(0).getRow(0).getCell(0, MissingCellPolicy.CREATE_NULL_AS_BLANK).getDateCellValue();
assertEquals(dateExp, dateAct); assertEquals(dateExp, dateAct);
workbook.close(); workbook.close();
workbook = null; workbook = null;
// now check read/write mode // now check read/write mode
workbook = WorkbookFactory.create(OPCPackage.open(file, PackageAccess.READ_WRITE)); workbook = WorkbookFactory.create(OPCPackage.open(file, PackageAccess.READ_WRITE));
dateAct = workbook.getSheetAt(0).getRow(0).getCell(0, Row.CREATE_NULL_AS_BLANK).getDateCellValue(); dateAct = workbook.getSheetAt(0).getRow(0).getCell(0, MissingCellPolicy.CREATE_NULL_AS_BLANK).getDateCellValue();
assertEquals(dateExp, dateAct); assertEquals(dateExp, dateAct);
workbook.close(); workbook.close();
workbook = null; workbook = null;
workbook = WorkbookFactory.create(OPCPackage.open(file, PackageAccess.READ_WRITE)); workbook = WorkbookFactory.create(OPCPackage.open(file, PackageAccess.READ_WRITE));
dateAct = workbook.getSheetAt(0).getRow(0).getCell(0, Row.CREATE_NULL_AS_BLANK).getDateCellValue(); dateAct = workbook.getSheetAt(0).getRow(0).getCell(0, MissingCellPolicy.CREATE_NULL_AS_BLANK).getDateCellValue();
assertEquals(dateExp, dateAct); assertEquals(dateExp, dateAct);
workbook.close(); workbook.close();
workbook = null; workbook = null;

View File

@ -41,6 +41,7 @@ import javax.swing.JLabel;
import org.apache.poi.ss.ITestDataProvider; import org.apache.poi.ss.ITestDataProvider;
import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Row.MissingCellPolicy;
import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.util.LocaleUtil; import org.apache.poi.util.LocaleUtil;
@ -141,7 +142,7 @@ public class CellFormatTestBase {
protected void openWorkbook(String workbookName) protected void openWorkbook(String workbookName)
throws IOException { throws IOException {
workbook = _testDataProvider.openSampleWorkbook(workbookName); workbook = _testDataProvider.openSampleWorkbook(workbookName);
workbook.setMissingCellPolicy(Row.CREATE_NULL_AS_BLANK); workbook.setMissingCellPolicy(MissingCellPolicy.CREATE_NULL_AS_BLANK);
testFile = workbookName; testFile = workbookName;
} }

View File

@ -28,6 +28,7 @@ import java.io.IOException;
import java.util.Iterator; import java.util.Iterator;
import org.apache.poi.ss.ITestDataProvider; import org.apache.poi.ss.ITestDataProvider;
import org.apache.poi.ss.usermodel.Row.MissingCellPolicy;
import org.junit.Test; import org.junit.Test;
/** /**
@ -263,41 +264,41 @@ public abstract class BaseTestRow {
assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(5).getCellType()); assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(5).getCellType());
// RETURN_NULL_AND_BLANK - same as default // RETURN_NULL_AND_BLANK - same as default
assertEquals(Cell.CELL_TYPE_STRING, row.getCell(0, Row.RETURN_NULL_AND_BLANK).getCellType()); assertEquals(Cell.CELL_TYPE_STRING, row.getCell(0, MissingCellPolicy.RETURN_NULL_AND_BLANK).getCellType());
assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(1, Row.RETURN_NULL_AND_BLANK).getCellType()); assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(1, MissingCellPolicy.RETURN_NULL_AND_BLANK).getCellType());
assertEquals(null, row.getCell(2, Row.RETURN_NULL_AND_BLANK)); assertEquals(null, row.getCell(2, MissingCellPolicy.RETURN_NULL_AND_BLANK));
assertEquals(null, row.getCell(3, Row.RETURN_NULL_AND_BLANK)); assertEquals(null, row.getCell(3, MissingCellPolicy.RETURN_NULL_AND_BLANK));
assertEquals(Cell.CELL_TYPE_BLANK, row.getCell(4, Row.RETURN_NULL_AND_BLANK).getCellType()); assertEquals(Cell.CELL_TYPE_BLANK, row.getCell(4, MissingCellPolicy.RETURN_NULL_AND_BLANK).getCellType());
assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(5, Row.RETURN_NULL_AND_BLANK).getCellType()); assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(5, MissingCellPolicy.RETURN_NULL_AND_BLANK).getCellType());
// RETURN_BLANK_AS_NULL - nearly the same // RETURN_BLANK_AS_NULL - nearly the same
assertEquals(Cell.CELL_TYPE_STRING, row.getCell(0, Row.RETURN_BLANK_AS_NULL).getCellType()); assertEquals(Cell.CELL_TYPE_STRING, row.getCell(0, MissingCellPolicy.RETURN_BLANK_AS_NULL).getCellType());
assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(1, Row.RETURN_BLANK_AS_NULL).getCellType()); assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(1, MissingCellPolicy.RETURN_BLANK_AS_NULL).getCellType());
assertEquals(null, row.getCell(2, Row.RETURN_BLANK_AS_NULL)); assertEquals(null, row.getCell(2, MissingCellPolicy.RETURN_BLANK_AS_NULL));
assertEquals(null, row.getCell(3, Row.RETURN_BLANK_AS_NULL)); assertEquals(null, row.getCell(3, MissingCellPolicy.RETURN_BLANK_AS_NULL));
assertEquals(null, row.getCell(4, Row.RETURN_BLANK_AS_NULL)); assertEquals(null, row.getCell(4, MissingCellPolicy.RETURN_BLANK_AS_NULL));
assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(5, Row.RETURN_BLANK_AS_NULL).getCellType()); assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(5, MissingCellPolicy.RETURN_BLANK_AS_NULL).getCellType());
// CREATE_NULL_AS_BLANK - creates as needed // CREATE_NULL_AS_BLANK - creates as needed
assertEquals(Cell.CELL_TYPE_STRING, row.getCell(0, Row.CREATE_NULL_AS_BLANK).getCellType()); assertEquals(Cell.CELL_TYPE_STRING, row.getCell(0, MissingCellPolicy.CREATE_NULL_AS_BLANK).getCellType());
assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(1, Row.CREATE_NULL_AS_BLANK).getCellType()); assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(1, MissingCellPolicy.CREATE_NULL_AS_BLANK).getCellType());
assertEquals(Cell.CELL_TYPE_BLANK, row.getCell(2, Row.CREATE_NULL_AS_BLANK).getCellType()); assertEquals(Cell.CELL_TYPE_BLANK, row.getCell(2, MissingCellPolicy.CREATE_NULL_AS_BLANK).getCellType());
assertEquals(Cell.CELL_TYPE_BLANK, row.getCell(3, Row.CREATE_NULL_AS_BLANK).getCellType()); assertEquals(Cell.CELL_TYPE_BLANK, row.getCell(3, MissingCellPolicy.CREATE_NULL_AS_BLANK).getCellType());
assertEquals(Cell.CELL_TYPE_BLANK, row.getCell(4, Row.CREATE_NULL_AS_BLANK).getCellType()); assertEquals(Cell.CELL_TYPE_BLANK, row.getCell(4, MissingCellPolicy.CREATE_NULL_AS_BLANK).getCellType());
assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(5, Row.CREATE_NULL_AS_BLANK).getCellType()); assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(5, MissingCellPolicy.CREATE_NULL_AS_BLANK).getCellType());
// Check created ones get the right column // Check created ones get the right column
assertEquals(0, row.getCell(0, Row.CREATE_NULL_AS_BLANK).getColumnIndex()); assertEquals(0, row.getCell(0, MissingCellPolicy.CREATE_NULL_AS_BLANK).getColumnIndex());
assertEquals(1, row.getCell(1, Row.CREATE_NULL_AS_BLANK).getColumnIndex()); assertEquals(1, row.getCell(1, MissingCellPolicy.CREATE_NULL_AS_BLANK).getColumnIndex());
assertEquals(2, row.getCell(2, Row.CREATE_NULL_AS_BLANK).getColumnIndex()); assertEquals(2, row.getCell(2, MissingCellPolicy.CREATE_NULL_AS_BLANK).getColumnIndex());
assertEquals(3, row.getCell(3, Row.CREATE_NULL_AS_BLANK).getColumnIndex()); assertEquals(3, row.getCell(3, MissingCellPolicy.CREATE_NULL_AS_BLANK).getColumnIndex());
assertEquals(4, row.getCell(4, Row.CREATE_NULL_AS_BLANK).getColumnIndex()); assertEquals(4, row.getCell(4, MissingCellPolicy.CREATE_NULL_AS_BLANK).getColumnIndex());
assertEquals(5, row.getCell(5, Row.CREATE_NULL_AS_BLANK).getColumnIndex()); assertEquals(5, row.getCell(5, MissingCellPolicy.CREATE_NULL_AS_BLANK).getColumnIndex());
// Now change the cell policy on the workbook, check // Now change the cell policy on the workbook, check
// that that is now used if no policy given // that that is now used if no policy given
workbook.setMissingCellPolicy(Row.RETURN_BLANK_AS_NULL); workbook.setMissingCellPolicy(MissingCellPolicy.RETURN_BLANK_AS_NULL);
assertEquals(Cell.CELL_TYPE_STRING, row.getCell(0).getCellType()); assertEquals(Cell.CELL_TYPE_STRING, row.getCell(0).getCellType());
assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(1).getCellType()); assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(1).getCellType());

View File

@ -25,6 +25,7 @@ import java.io.FileInputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.hssf.HSSFTestDataSamples;
import org.apache.poi.ss.usermodel.Row.MissingCellPolicy;
import org.apache.poi.util.LocaleUtil; import org.apache.poi.util.LocaleUtil;
import org.junit.Test; import org.junit.Test;
@ -60,7 +61,7 @@ public final class TestFractionFormat {
String[] truths = truthLine.split("\t"); String[] truths = truthLine.split("\t");
// Intentionally ignore the last column (tika-1132), for now // Intentionally ignore the last column (tika-1132), for now
for (short j = 3; j < 12; j++){ for (short j = 3; j < 12; j++){
Cell cell = r.getCell(j, Row.CREATE_NULL_AS_BLANK); Cell cell = r.getCell(j, MissingCellPolicy.CREATE_NULL_AS_BLANK);
String formatted = clean(formatter.formatCellValue(cell, evaluator)); String formatted = clean(formatter.formatCellValue(cell, evaluator));
if (truths.length <= j){ if (truths.length <= j){
continue; continue;