Class CellBase
- java.lang.Object
-
- org.apache.poi.ss.usermodel.CellBase
-
-
Constructor Summary
Constructors Constructor Description CellBase()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description CellAddress
getAddress()
Gets the address of this cellvoid
removeFormula()
Removes formula, if any.void
setBlank()
Removes formula and value from the cell, and sets its type toCellType.BLANK
.void
setCellFormula(java.lang.String formula)
Sets formula for this cell.void
setCellType(CellType cellType)
Set the cells type (blank, numeric, boolean, error or string).void
setCellValue(double value)
Set a numeric value for the cell.void
setCellValue(java.lang.String value)
Set a string value for the cell.void
setCellValue(java.time.LocalDateTime value)
Converts the supplied date to its equivalent Excel numeric value and sets that into the cell.void
setCellValue(java.util.Calendar value)
Set a date value for the cell.void
setCellValue(java.util.Date value)
Converts the supplied date to its equivalent Excel numeric value and sets that into the cell.void
setCellValue(RichTextString value)
Set a rich string value for the cell.void
tryToDeleteArrayFormula(java.lang.String message)
Called when this an array formula in this cell is deleted.-
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.poi.ss.usermodel.Cell
getArrayFormulaRange, getBooleanCellValue, getCachedFormulaResultType, getCellComment, getCellFormula, getCellStyle, getCellType, getColumnIndex, getDateCellValue, getErrorCellValue, getHyperlink, getLocalDateTimeCellValue, getNumericCellValue, getRichStringCellValue, getRow, getRowIndex, getSheet, getStringCellValue, isPartOfArrayFormulaGroup, removeCellComment, removeHyperlink, setAsActiveCell, setCellComment, setCellErrorValue, setCellStyle, setCellValue, setCellValue, setHyperlink
-
-
-
-
Method Detail
-
setCellType
public final void setCellType(CellType cellType)
Set the cells type (blank, numeric, boolean, error or string).If the cell currently contains a value, the value will be converted to match the new type, if possible. Formatting is generally lost in the process however.
Conversion rules:
to NUMERIC: numeric value is left as is. True converts to 1.0, false converts to 0. otherwise, the value is set to 0. Formula is removed.
If what you want to do is get a String value for your numeric cell, stop! This is not the way to do it. Instead, for fetching the string value of a numeric or boolean or date cell, use
DataFormatter
instead.If cell is a member of an array formula group containing more than 1 cell, an
IllegalStateException
is thrown. If the array formula group contains only this cell, it is removed.Passing
CellType.FORMULA
is illegal and will result in anIllegalArgumentException
.- Specified by:
setCellType
in interfaceCell
-
setBlank
public void setBlank()
Removes formula and value from the cell, and sets its type toCellType.BLANK
. Preserves comments and hyperlinks. WhileCell.setCellType(CellType)
exists, is an alias forsetCellType(CellType.BLANK)
.
-
getAddress
public CellAddress getAddress()
Gets the address of this cell- Specified by:
getAddress
in interfaceCell
- Returns:
A1
style address of this cell
-
tryToDeleteArrayFormula
public final void tryToDeleteArrayFormula(java.lang.String message)
Called when this an array formula in this cell is deleted.The purpose of this method is to validate the cell state prior to modification.
- Parameters:
message
- a customized exception message for the case if deletion of the cell is impossible. If null, a default message will be generated- Throws:
java.lang.IllegalStateException
- if modification is not allowed Note. Exposing this to public is ugly. Needed for methods like Sheet#shiftRows.- See Also:
setCellType(CellType)
,setCellFormula(String)
,Row.removeCell(org.apache.poi.ss.usermodel.Cell)
,Sheet.removeRow(org.apache.poi.ss.usermodel.Row)
,Sheet.shiftRows(int, int, int)
,Sheet.addMergedRegion(org.apache.poi.ss.util.CellRangeAddress)
-
setCellFormula
public final void setCellFormula(java.lang.String formula) throws FormulaParseException, java.lang.IllegalStateException
Sets formula for this cell.If
formula
is not null, sets or updates the formula. Ifformula
is null, removes the formula. Or useCell.removeFormula()
to remove the formula.Note, this method only sets the formula string and does not calculate the formula value. To set the precalculated value use
Cell.setCellValue(double)
.If the cell was blank, sets value to 0. Otherwise, preserves the value as precalculated.
In XSSF implementation, there is a
XSSFWorkbook.setCellFormulaValidation(boolean)
setting that can validate (but also in some cases, reformat) the formula.- Specified by:
setCellFormula
in interfaceCell
- Parameters:
formula
- the formula to set, e.g."SUM(C4:E4)"
. If the argument isnull
then the current formula is removed.- Throws:
FormulaParseException
- if the formula has incorrect syntax or is otherwise invalidjava.lang.IllegalStateException
- if this cell is a part of an array formula group containing other cells- See Also:
Cell.removeFormula()
,Workbook.setForceFormulaRecalculation(boolean)
-
removeFormula
public final void removeFormula()
Removes formula, if any. If cell was blank, leaves it as is. If it is a part of an array formula group, blanks the cell. If has a regular formula, removes the formula preserving the "cached" value.- Specified by:
removeFormula
in interfaceCell
-
setCellValue
public void setCellValue(double value)
Set a numeric value for the cell.- Specified by:
setCellValue
in interfaceCell
- Parameters:
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.
-
setCellValue
public void setCellValue(java.util.Date value)
Description copied from interface:Cell
Converts the supplied date to its equivalent Excel numeric value and sets that into the cell.
Note - There is actually no 'DATE' cell type in Excel. In many cases (when entering date values), Excel automatically adjusts the cell style to some date format, creating the illusion that the cell data type is now something besides
CellType.NUMERIC
. POI does not attempt to replicate this behaviour. To make a numeric cell display as a date, useCell.setCellStyle(CellStyle)
etc.- Specified by:
setCellValue
in interfaceCell
- Parameters:
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 numerics cell and set its value.
-
setCellValue
public void setCellValue(java.time.LocalDateTime value)
Description copied from interface:Cell
Converts the supplied date to its equivalent Excel numeric value and sets that into the cell.
Note - There is actually no 'DATE' cell type in Excel. In many cases (when entering date values), Excel automatically adjusts the cell style to some date format, creating the illusion that the cell data type is now something besides
CellType.NUMERIC
. POI does not attempt to replicate this behaviour. To make a numeric cell display as a date, useCell.setCellStyle(CellStyle)
etc.- Specified by:
setCellValue
in interfaceCell
- Parameters:
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 numerics cell and set its value.
-
setCellValue
public void setCellValue(java.util.Calendar value)
Set a date value for the cell. Excel treats dates as numeric so you will need to format the cell as a date.
This will set the cell value based on the Calendar's timezone. As Excel does not support timezones this means that both 20:00+03:00 and 20:00-03:00 will be reported as the same value (20:00) even that there are 6 hours difference between the two times. This difference can be preserved by using
setCellValue(value.getTime())
which will automatically shift the times to the default timezone.- Specified by:
setCellValue
in interfaceCell
- Parameters:
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.
-
setCellValue
public void setCellValue(java.lang.String value)
Set a string value for the cell.- Specified by:
setCellValue
in interfaceCell
- Parameters:
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.
-
setCellValue
public void setCellValue(RichTextString value)
Set a rich string value for the cell.- Specified by:
setCellValue
in interfaceCell
- Parameters:
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.
-
-