org.apache.poi.xssf.usermodel

## Class XSSFCell

- java.lang.Object
- - org.apache.poi.ss.usermodel.CellBase
  - - org.apache.poi.xssf.usermodel.XSSFCell

- All Implemented Interfaces:
    Cell

      public final class XSSFCell
      extends CellBase

  High level representation of a cell in a row of a spreadsheet.

  Cells can be numeric, formula-based or string-based (text). The cell type specifies this. String cells cannot contain numbers and numeric cells cannot contain strings (at least according to our model). Client apps should do the conversions themselves. Formula cells have the formula string, as well as the formula result, which can be numeric or string.

  Cells should have their number (0 based) before being added to a row. Only cells that have values should be added.

- - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `XSSFCell(XSSFRow row, org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCell cell)` Construct a XSSFCell.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `copyCellFrom(Cell srcCell, CellCopyPolicy policy)` Copy cell value, formula and style, from srcCell per cell copy policy If srcCell is null, clears the cell value and cell style per cell copy policy This does not shift references in formulas.
    `CellRangeAddress` | `getArrayFormulaRange()` Only valid for array formula cells
    `boolean` | `getBooleanCellValue()` Get the value of the cell as a boolean.
    `CellType` | `getCachedFormulaResultType()` Only valid for formula cells
    `CellType` | `getCachedFormulaResultTypeEnum()` Deprecated. use `getCachedFormulaResultType` instead Will be deleted when we make the CellType enum transition. See bug 59791.
    `XSSFComment` | `getCellComment()` Returns cell comment associated with this cell
    `java.lang.String` | `getCellFormula()` Return a formula for the cell, for example, `SUM(C4:E4)`
    `protected java.lang.String` | `getCellFormula(BaseXSSFEvaluationWorkbook fpb)` package/hierarchy use only - reuse an existing evaluation workbook if available for caching
    `XSSFCellStyle` | `getCellStyle()` Return the cell's style.
    `CellType` | `getCellType()` Return the cell type.
    `int` | `getColumnIndex()` Returns column index of this cell
    `org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCell` | `getCTCell()` Returns the xml bean containing information about the cell's location (reference), value, data type, formatting, and formula
    `java.util.Date` | `getDateCellValue()` Get the value of the cell as a date.
    `java.lang.String` | `getErrorCellString()` Returns the error message, such as #VALUE!
    `byte` | `getErrorCellValue()` Get the value of the cell as an error code.
    `XSSFHyperlink` | `getHyperlink()` Returns hyperlink associated with this cell
    `java.time.LocalDateTime` | `getLocalDateTimeCellValue()` Get the value of the cell as a LocalDateTime.
    `double` | `getNumericCellValue()` Get the value of the cell as a number.
    `java.lang.String` | `getRawValue()` Returns the raw, underlying ooxml value for the cell
    `java.lang.String` | `getReference()` Returns an A1 style reference to the location of this cell
    `XSSFRichTextString` | `getRichStringCellValue()` Get the value of the cell as a XSSFRichTextString
    `XSSFRow` | `getRow()` Returns the row this cell belongs to
    `int` | `getRowIndex()` Returns row index of a row in the sheet that contains this cell
    `protected SharedStringsTable` | `getSharedStringSource()`
    `XSSFSheet` | `getSheet()` Returns the sheet this cell belongs to
    `protected SpreadsheetVersion` | `getSpreadsheetVersion()` Get the spreadsheet version for the given implementation.
    `java.lang.String` | `getStringCellValue()` Get the value of the cell as a string
    `protected StylesTable` | `getStylesSource()`
    `boolean` | `isPartOfArrayFormulaGroup()`
    `void` | `removeCellComment()` Removes the comment for this cell, if there is one.
    `protected void` | `removeFormulaImpl()` Implementation-specific removal of the formula.
    `void` | `removeHyperlink()` Removes the hyperlink for this cell, if there is one.
    `void` | `setAsActiveCell()` Sets this cell as the active cell for the worksheet
    `void` | `setCellComment(Comment comment)` Assign a comment to this cell.
    `void` | `setCellErrorValue(byte errorCode)` Set a error value for the cell
    `void` | `setCellErrorValue(FormulaError error)` Set a error value for the cell
    `protected void` | `setCellFormulaImpl(java.lang.String formula)` Sets formula for this cell.
    `protected void` | `setCellNum(int num)` Sets column index of this cell
    `void` | `setCellStyle(CellStyle style)` Set the style for the cell.
    `protected void` | `setCellType(CellType cellType, BaseXSSFEvaluationWorkbook evalWb)` Needed by bug #62834, which points out getCellFormula() expects an evaluation context or creates a new one, so if there is one in use, it needs to be carried on through.
    `protected void` | `setCellTypeImpl(CellType cellType)` Implementation-specific logic
    `void` | `setCellValue(boolean value)` Set a boolean value for the cell
    `protected void` | `setCellValueImpl(java.util.Calendar value)` Implementation-specific way to set a calendar value.
    `protected void` | `setCellValueImpl(java.util.Date value)` Implementation-specific way to set a date value.
    `void` | `setCellValueImpl(double value)` Implementation-specific way to set a numeric value.
    `protected void` | `setCellValueImpl(java.time.LocalDateTime value)` Implementation-specific way to set a date value.
    `protected void` | `setCellValueImpl(RichTextString str)` Implementation-specific way to set a RichTextString value.
    `protected void` | `setCellValueImpl(java.lang.String value)` Implementation-specific way to set a string value.
    `void` | `setCTCell(org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCell cell)` Set a new internal xml bean.
    `void` | `setHyperlink(Hyperlink hyperlink)` Assign a hyperlink to this cell.
    `java.lang.String` | `toString()` Returns a string representation of the cell
    `void` | `updateCellReferencesForShifting(java.lang.String msg)`

    - ### Methods inherited from class org.apache.poi.ss.usermodel.CellBase

      `getAddress, getCellTypeEnum, getValueType, removeFormula, setBlank, setCellFormula, setCellType, setCellValue, setCellValue, setCellValue, setCellValue, setCellValue, setCellValue, tryToDeleteArrayFormula`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface org.apache.poi.ss.usermodel.Cell

      `setCellValue`

- - ### Constructor Detail

    - #### XSSFCell

          protected XSSFCell(XSSFRow row,
                             org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCell cell)

      Construct a XSSFCell.
      Parameters:
        `row` - the parent row.
        `cell` - the xml bean containing information about the cell.

  - ### Method Detail

    - #### getSpreadsheetVersion

          protected SpreadsheetVersion getSpreadsheetVersion()

      Get the spreadsheet version for the given implementation.
      Specified by:
        `getSpreadsheetVersion` in class `CellBase`
      Returns:
        the spreadsheet version

    - #### copyCellFrom

          @Beta
           @Internal
          public void copyCellFrom(Cell srcCell,
                                                    CellCopyPolicy policy)

      Copy cell value, formula and style, from srcCell per cell copy policy If srcCell is null, clears the cell value and cell style per cell copy policy This does not shift references in formulas. Use `XSSFRowShifter` to shift references in formulas.
      Parameters:
        `srcCell` - The cell to take value, formula and style from
        `policy` - The policy for copying the information, see `CellCopyPolicy`
      Throws:
        `java.lang.IllegalArgumentException` - if copy cell style and srcCell is from a different workbook

    - #### getSharedStringSource

          protected SharedStringsTable getSharedStringSource()

      Returns:
        table of strings shared across this workbook

    - #### getStylesSource

          protected StylesTable getStylesSource()

      Returns:
        table of cell styles shared across this workbook

    - #### getSheet

          public XSSFSheet getSheet()

      Returns the sheet this cell belongs to
      Returns:
        the sheet this cell belongs to

    - #### getRow

          public XSSFRow getRow()

      Returns the row this cell belongs to
      Returns:
        the row this cell belongs to

    - #### getBooleanCellValue

          public boolean getBooleanCellValue()

      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.

      Returns:
        the value of the cell as a boolean
      Throws:
        `java.lang.IllegalStateException` - if the cell type returned by `getCellType()` is not `CellType.BOOLEAN`, `CellType.BLANK` or `CellType.FORMULA`

    - #### setCellValue

          public void setCellValue(boolean value)

      Set a boolean value for the cell
      Parameters:
        `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.

    - #### getNumericCellValue

          public double getNumericCellValue()

      Get the value of the cell as a number.

      For strings we throw an exception. For blank cells we return a 0. For formulas or error cells we return the precalculated value;

      Returns:
        the value of the cell as a number
      Throws:
        `java.lang.IllegalStateException` - if the cell type returned by `getCellType()` is `CellType.STRING`
        `java.lang.NumberFormatException` - if the cell value isn't a parsable `double`.
      See Also:
        `for turning this number into a string similar to that which Excel would render this number as.`

    - #### setCellValueImpl

          public void setCellValueImpl(double value)

      Implementation-specific way to set a numeric value. `value` is guaranteed to be a valid (non-NaN) double. The implementation is expected to adjust the cell type accordingly, so that after this call getCellType() or getCachedFormulaResultType() would return `CellType.NUMERIC`.
      Specified by:
        `setCellValueImpl` in class `CellBase`
      Parameters:
        `value` - the new value to set

    - #### getStringCellValue

          public java.lang.String getStringCellValue()

      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 throw an exception

      Returns:
        the value of the cell as a string

    - #### getRichStringCellValue

          public XSSFRichTextString getRichStringCellValue()

      Get the value of the cell as a XSSFRichTextString

      For numeric cells we throw an exception. For blank cells we return an empty string. For formula cells we return the pre-calculated value if a string, otherwise an exception

      Returns:
        the value of the cell as a XSSFRichTextString

    - #### setCellValueImpl

          protected void setCellValueImpl(java.lang.String value)

      Implementation-specific way to set a string value. The value is guaranteed to be non-null and to satisfy the length limitation imposed by the spreadsheet version. The implementation is expected to adjust cell type accordingly, so that after this call getCellType() or getCachedFormulaResultType() (whichever appropriate) would return `CellType.STRING`.
      Specified by:
        `setCellValueImpl` in class `CellBase`
      Parameters:
        `value` - the new value to set.

    - #### setCellValueImpl

          protected void setCellValueImpl(RichTextString str)

      Implementation-specific way to set a RichTextString value. The value is guaranteed to be non-null, having non-null value, and to satisfy the length limitation imposed by the spreadsheet version. The implementation is expected to adjust cell type accordingly, so that after this call getCellType() or getCachedFormulaResultType() (whichever appropriate) would return `CellType.STRING`.
      Specified by:
        `setCellValueImpl` in class `CellBase`
      Parameters:
        `str` - the new value to set.

    - #### getCellFormula

          public java.lang.String getCellFormula()

      Return a formula for the cell, for example, `SUM(C4:E4)`
      Returns:
        a formula for the cell
      Throws:
        `java.lang.IllegalStateException` - if the cell type returned by `getCellType()` is not `CellType.FORMULA`

    - #### getCellFormula

          protected java.lang.String getCellFormula(BaseXSSFEvaluationWorkbook fpb)

      package/hierarchy use only - reuse an existing evaluation workbook if available for caching
      Parameters:
        `fpb` - evaluation workbook for reuse, if available, or null to create a new one as needed
      Returns:
        a formula for the cell
      Throws:
        `java.lang.IllegalStateException` - if the cell type returned by `getCellType()` is not `CellType.FORMULA`

    - #### setCellFormulaImpl

          protected void setCellFormulaImpl(java.lang.String formula)

      Sets formula for this cell.

      Note, this method only sets the formula string and does not calculate the formula value. To set the precalculated value use `CellBase.setCellValue(double)` or `CellBase.setCellValue(String)`

      Note, if there are any shared formulas, his will invalidate any `FormulaEvaluator` instances based on this workbook.

      Specified by:
        `setCellFormulaImpl` in class `CellBase`
      Parameters:
        `formula` - the formula to set, e.g. `"SUM(C4:E4)"`. If the argument is `null` then the current formula is removed.
      Throws:
        `FormulaParseException` - if the formula has incorrect syntax or is otherwise invalid
        `java.lang.IllegalStateException` - if the operation is not allowed, for example, when the cell is a part of a multi-cell array formula

    - #### removeFormulaImpl

          protected void removeFormulaImpl()

      Description copied from class: `CellBase`
      Implementation-specific removal of the formula. The cell is guaranteed to have a regular formula set. Shall preserve the "cached" value.
      Specified by:
        `removeFormulaImpl` in class `CellBase`

    - #### getColumnIndex

          public int getColumnIndex()

      Returns column index of this cell
      Returns:
        zero-based column index of a column in a sheet.

    - #### getRowIndex

          public int getRowIndex()

      Returns row index of a row in the sheet that contains this cell
      Returns:
        zero-based row index of a row in the sheet that contains this cell

    - #### getReference

          public java.lang.String getReference()

      Returns an A1 style reference to the location of this cell
      Returns:
        A1 style reference to the location of this cell

    - #### getCellStyle

          public XSSFCellStyle getCellStyle()

      Return the cell's style.
      Returns:
        the cell's style.
      See Also:
        `Workbook.getCellStyleAt(int)`

    - #### setCellStyle

          public void setCellStyle(CellStyle style)

      Set the style for the cell. The style should be an XSSFCellStyle created/retreived from the XSSFWorkbook.

      To change the style of a cell without affecting other cells that use the same style, use `CellUtil.setCellStyleProperties(Cell, java.util.Map)`

      Parameters:
        `style` - reference contained in the workbook. If the value is null then the style information is removed causing the cell to used the default workbook style.
      Throws:
        `java.lang.IllegalArgumentException` - if style belongs to a different styles source (most likely because style is from a different Workbook)
      See Also:
        `Workbook.createCellStyle()`

    - #### getCellType

          public CellType getCellType()

      Return the cell type. Tables in an array formula return `CellType.FORMULA` for all cells, even though the formula is only defined in the OOXML file for the top left cell of the array.

      NOTE: POI does not support data table formulas. Cells in a data table appear to POI as plain cells typed from their cached value.

      Returns:
        the cell type

    - #### getCachedFormulaResultType

          public CellType getCachedFormulaResultType()

      Only valid for formula cells
      Returns:
        one of (`CellType.NUMERIC`, `CellType.STRING`, `CellType.BOOLEAN`, `CellType.ERROR`) depending on the cached value of the formula

    - #### getCachedFormulaResultTypeEnum

          @Deprecated
           @Removal(version="4.2")
          public CellType getCachedFormulaResultTypeEnum()

      Deprecated. use `getCachedFormulaResultType` instead Will be deleted when we make the CellType enum transition. See bug 59791.
      Only valid for formula cells
      Returns:
        one of (`CellType.NUMERIC`, `CellType.STRING`, `CellType.BOOLEAN`, `CellType.ERROR`) depending on the cached value of the formula
      Since:
        POI 3.15 beta 3

    - #### getDateCellValue

          public java.util.Date getDateCellValue()

      Get the value of the cell as a date.

      For strings we throw an exception. For blank cells we return a null.

      Returns:
        the value of the cell as a date
      Throws:
        `java.lang.IllegalStateException` - if the cell type returned by `getCellType()` is `CellType.STRING`
        `java.lang.NumberFormatException` - if the cell value isn't a parsable `double`.
      See Also:
        `for formatting this date into a string similar to how excel does.`

    - #### getLocalDateTimeCellValue

          public java.time.LocalDateTime getLocalDateTimeCellValue()

      Get the value of the cell as a LocalDateTime.

      For strings we throw an exception. For blank cells we return a null.

      Returns:
        the value of the cell as a LocalDateTime
      Throws:
        `java.lang.IllegalStateException` - if the cell type returned by `getCellType()` is `CellType.STRING`
        `java.lang.NumberFormatException` - if the cell value isn't a parsable `double`.
      See Also:
        `for formatting this date into a string similar to how excel does.`

    - #### setCellValueImpl

          protected void setCellValueImpl(java.util.Date value)

      Implementation-specific way to set a date value. `value` is guaranteed to be non-null. The implementation is expected to adjust the cell type accordingly, so that after this call getCellType() or getCachedFormulaResultType() would return `CellType.NUMERIC`.
      Specified by:
        `setCellValueImpl` in class `CellBase`
      Parameters:
        `value` - the new date to set

    - #### setCellValueImpl

          protected void setCellValueImpl(java.time.LocalDateTime value)

      Implementation-specific way to set a date value. `value` is guaranteed to be non-null. The implementation is expected to adjust the cell type accordingly, so that after this call getCellType() or getCachedFormulaResultType() would return `CellType.NUMERIC`.
      Specified by:
        `setCellValueImpl` in class `CellBase`
      Parameters:
        `value` - the new date to set

    - #### setCellValueImpl

          protected void setCellValueImpl(java.util.Calendar value)

      Implementation-specific way to set a calendar value. `value` is guaranteed to be non-null. The implementation is expected to adjust the cell type accordingly, so that after this call getCellType() or getCachedFormulaResultType() would return `CellType.NUMERIC`.
      Specified by:
        `setCellValueImpl` in class `CellBase`
      Parameters:
        `value` - the new calendar value to set

    - #### getErrorCellString

          public java.lang.String getErrorCellString()
                                              throws java.lang.IllegalStateException

      Returns the error message, such as #VALUE!
      Returns:
        the error message such as #VALUE!
      Throws:
        `java.lang.IllegalStateException` - if the cell type returned by `getCellType()` isn't `CellType.ERROR`
      See Also:
        `FormulaError`

    - #### getErrorCellValue

          public byte getErrorCellValue()
                                 throws java.lang.IllegalStateException

      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.

      Returns:
        the value of the cell as an error code
      Throws:
        `java.lang.IllegalStateException` - if the cell type returned by `getCellType()` isn't `#ERROR`
      See Also:
        `FormulaError`

    - #### setCellErrorValue

          public void setCellErrorValue(byte errorCode)

      Set a error value for the cell
      Parameters:
        `errorCode` - the error value to set this cell to. For formulas we'll set the precalculated value , for errors we'll set its value. For other types we will change the cell to an error cell and set its value.
      See Also:
        `FormulaError`

    - #### setCellErrorValue

          public void setCellErrorValue(FormulaError error)

      Set a error value for the cell
      Parameters:
        `error` - the error value to set this cell to. For formulas we'll set the precalculated value , for errors we'll set its value. For other types we will change the cell to an error cell and set its value.

    - #### setAsActiveCell

          public void setAsActiveCell()

      Sets this cell as the active cell for the worksheet

    - #### setCellNum

          protected void setCellNum(int num)

      Sets column index of this cell
      Parameters:
        `num` - column index of this cell

    - #### setCellTypeImpl

          protected void setCellTypeImpl(CellType cellType)

      Description copied from class: `CellBase`
      Implementation-specific logic
      Specified by:
        `setCellTypeImpl` in class `CellBase`
      Parameters:
        `cellType` - new cell type. Guaranteed non-null, not _NONE.

    - #### setCellType

          protected void setCellType(CellType cellType,
                                     BaseXSSFEvaluationWorkbook evalWb)

      Needed by bug #62834, which points out getCellFormula() expects an evaluation context or creates a new one, so if there is one in use, it needs to be carried on through.
      Parameters:
        `cellType` -
        `evalWb` - BaseXSSFEvaluationWorkbook already in use, or null if a new implicit one should be used

    - #### toString

          public java.lang.String toString()

      Returns a string representation of the cell

      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>

      Overrides:
        `toString` in class `java.lang.Object`

    - #### getRawValue

          public java.lang.String getRawValue()

      Returns the raw, underlying ooxml value for the cell

      If the cell contains a string, then this value is an index into the shared string table, pointing to the actual string value. Otherwise, the value of the cell is expressed directly in this element. Cells containing formulas express the last calculated result of the formula in this element.

      Returns:
        the raw cell value as contained in the underlying CTCell bean, `null` for blank cells.

    - #### getCellComment

          public XSSFComment getCellComment()

      Returns cell comment associated with this cell
      Returns:
        the cell comment associated with this cell or `null`

    - #### setCellComment

          public void setCellComment(Comment comment)

      Assign a comment to this cell. If the supplied comment is null, the comment for this cell will be removed.
      Parameters:
        `comment` - the XSSFComment associated with this cell

    - #### removeCellComment

          public void removeCellComment()

      Removes the comment for this cell, if there is one.

    - #### getHyperlink

          public XSSFHyperlink getHyperlink()

      Returns hyperlink associated with this cell
      Returns:
        hyperlink associated with this cell or `null` if not found

    - #### setHyperlink

          public void setHyperlink(Hyperlink hyperlink)

      Assign a hyperlink to this cell. If the supplied hyperlink is null, the hyperlink for this cell will be removed.
      Parameters:
        `hyperlink` - the hyperlink to associate with this cell

    - #### removeHyperlink

          public void removeHyperlink()

      Removes the hyperlink for this cell, if there is one.

    - #### getCTCell

          @Internal
          public org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCell getCTCell()

      Returns the xml bean containing information about the cell's location (reference), value, data type, formatting, and formula
      Returns:
        the xml bean containing information about this cell

    - #### setCTCell

          @Internal
          public void setCTCell(org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCell cell)

      Set a new internal xml bean. This is only for internal use, do not call this from outside! This is necessary in some rare cases to work around XMLBeans specialties.

    - #### getArrayFormulaRange

          public CellRangeAddress getArrayFormulaRange()

      Description copied from interface: `Cell`
      Only valid for array formula cells
      Returns:
        range of the array formula group that the cell belongs to.

    - #### isPartOfArrayFormulaGroup

          public boolean isPartOfArrayFormulaGroup()

      Returns:
        `true` if this cell is part of group of cells having a common array formula.

    - #### updateCellReferencesForShifting

          public void updateCellReferencesForShifting(java.lang.String msg)

Copyright 2020 The Apache Software Foundation or its licensors, as applicable.