Class CellUtil


  • public final class CellUtil
    extends Object
    Various utility functions that make working with a cells and rows easier. The various methods that deal with style's allow you to create your CellStyles as you need them. When you apply a style change to a cell, the code will attempt to see if a style already exists that meets your needs. If not, then it will create a new style. This is to prevent creating too many styles. there is an upper limit in Excel on the number of styles that can be supported.
    • Method Detail

      • getRow

        public static Row getRow​(int rowIndex,
                                 Sheet sheet)
        Get a row from the spreadsheet, and create it if it doesn't exist.
        Parameters:
        rowIndex - The 0 based row number
        sheet - The sheet that the row is part of.
        Returns:
        The row indicated by the rowCounter
      • getCell

        public static Cell getCell​(Row row,
                                   int columnIndex)
        Get a specific cell from a row. If the cell doesn't exist, then create it.
        Parameters:
        row - The row that the cell is part of
        columnIndex - The column index that the cell is in.
        Returns:
        The cell indicated by the column.
      • createCell

        public static Cell createCell​(Row row,
                                      int column,
                                      String value,
                                      CellStyle style)
        Creates a cell, gives it a value, and applies a style if provided
        Parameters:
        row - the row to create the cell in
        column - the column index to create the cell in
        value - The value of the cell
        style - If the style is not null, then set
        Returns:
        A new Cell
      • createCell

        public static Cell createCell​(Row row,
                                      int column,
                                      String value)
        Create a cell, and give it a value.
        Parameters:
        row - the row to create the cell in
        column - the column index to create the cell in
        value - The value of the cell
        Returns:
        A new Cell.
      • copyCell

        @Beta
        public static void copyCell​(Cell srcCell,
                                    Cell destCell,
                                    CellCopyPolicy policy,
                                    CellCopyContext context)
        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. Note that if you are copying from a source cell from a different type of then you may need to disable style copying in the CellCopyPolicy (HSSF styles are not compatible with XSSF styles, for instance). This does not shift references in formulas. The copyRowFrom method on XSSFRow and HSSFRow does attempt to shift references in formulas.
        Parameters:
        srcCell - The cell to take value, formula and style from
        destCell - The cell to copy to
        policy - The policy for copying the information, see CellCopyPolicy
        context - The context for copying, see CellCopyContext
        Throws:
        IllegalArgumentException - if copy cell style and srcCell is from a different workbook
        IllegalStateException - if srcCell hyperlink is not an instance of Duplicatable
        Since:
        POI 5.2.0
      • setAlignment

        public static void setAlignment​(Cell cell,
                                        HorizontalAlignment align)
        Take a cell, and align it. This is superior to cell.getCellStyle().setAlignment(align) because this method will not modify the CellStyle object that may be referenced by multiple cells. Instead, this method will search for existing CellStyles that match the desired CellStyle, creating a new CellStyle with the desired style if no match exists.
        Parameters:
        cell - the cell to set the alignment for
        align - the horizontal alignment to use.
        Since:
        POI 3.15 beta 3
        See Also:
        for alignment options
      • setVerticalAlignment

        public static void setVerticalAlignment​(Cell cell,
                                                VerticalAlignment align)
        Take a cell, and vertically align it. This is superior to cell.getCellStyle().setVerticalAlignment(align) because this method will not modify the CellStyle object that may be referenced by multiple cells. Instead, this method will search for existing CellStyles that match the desired CellStyle, creating a new CellStyle with the desired style if no match exists.
        Parameters:
        cell - the cell to set the alignment for
        align - the vertical alignment to use.
        Since:
        POI 3.15 beta 3
        See Also:
        for alignment options
      • setFont

        public static void setFont​(Cell cell,
                                   Font font)
        Take a cell, and apply a font to it
        Parameters:
        cell - the cell to set the alignment for
        font - The Font that you want to set.
        Throws:
        IllegalArgumentException - if font and cell do not belong to the same workbook
      • setCellStyleProperties

        public static void setCellStyleProperties​(Cell cell,
                                                  Map<String,​Object> properties)

        This method attempts to find an existing CellStyle that matches the cell's current style plus styles properties in properties. A new style is created if the workbook does not contain a matching style.

        Modifies the cell style of cell without affecting other cells that use the same style.

        This is necessary because Excel has an upper limit on the number of styles that it supports.

        This function is more efficient than multiple calls to setCellStyleProperty(Cell, String, Object) if adding multiple cell styles.

        For performance reasons, if this is the only cell in a workbook that uses a cell style, this method does NOT remove the old style from the workbook.

        Parameters:
        cell - The cell to change the style of
        properties - The properties to be added to a cell style, as {propertyName: propertyValue}.
        Since:
        POI 3.14 beta 2
      • setCellStyleProperty

        public static void setCellStyleProperty​(Cell cell,
                                                String propertyName,
                                                Object propertyValue)

        This method attempts to find an existing CellStyle that matches the cell's current style plus a single style property propertyName with value propertyValue. A new style is created if the workbook does not contain a matching style.

        Modifies the cell style of cell without affecting other cells that use the same style.

        If setting more than one cell style property on a cell, use setCellStyleProperties(Cell, Map), which is faster and does not add unnecessary intermediate CellStyles to the workbook.

        Parameters:
        cell - The cell that is to be changed.
        propertyName - The name of the property that is to be changed.
        propertyValue - The value of the property that is to be changed.
      • translateUnicodeValues

        public static Cell translateUnicodeValues​(Cell cell)
        Looks for text in the cell that should be unicode, like α and provides the unicode version of it.
        Parameters:
        cell - The cell to check for unicode values
        Returns:
        translated to unicode