Class StylesTable

  • All Implemented Interfaces:
    Styles

    public class StylesTable
    extends POIXMLDocumentPart
    implements Styles
    Table of styles shared across all sheets in a workbook.
    • Field Detail

      • FIRST_CUSTOM_STYLE_ID

        public static final int FIRST_CUSTOM_STYLE_ID
        The first style id available for use as a custom style
        See Also:
        Constant Field Values
    • Constructor Detail

      • StylesTable

        public StylesTable()
        Create a new, empty StylesTable
      • StylesTable

        public StylesTable​(PackagePart part)
                    throws java.io.IOException
        Throws:
        java.io.IOException
        Since:
        POI 3.14-Beta1
    • Method Detail

      • setMaxNumberOfDataFormats

        public void setMaxNumberOfDataFormats​(int num)
        Changes the maximum number of data formats that may be in a style table
        Parameters:
        num - the upper limit on number of data formats in the styles table when adding new data formats
        Throws:
        java.lang.IllegalArgumentException - if num < 0
        java.lang.IllegalStateException - if num < current number of data formats in the style table. Data formats must be explicitly removed before the limit can be decreased.
      • getMaxNumberOfDataFormats

        public int getMaxNumberOfDataFormats()
        Get the upper limit on the number of data formats that has been set for the style table. To get the current number of data formats in use, use getNumDataFormats().
        Returns:
        the maximum number of data formats allowed in the workbook
      • setWorkbook

        public void setWorkbook​(XSSFWorkbook wb)
      • getTheme

        public ThemesTable getTheme()
        Get the current Workbook's theme table, or null if the Workbook lacks any themes.

        Use ensureThemesTable() to have a themes table created if needed

      • setTheme

        public void setTheme​(ThemesTable theme)
      • ensureThemesTable

        public void ensureThemesTable()
        If there isn't currently a ThemesTable for the current Workbook, then creates one and sets it up. After this, calls to getTheme() won't give null
      • readFrom

        public void readFrom​(java.io.InputStream is)
                      throws java.io.IOException
        Read this shared styles table from an XML file.
        Parameters:
        is - The input stream containing the XML document.
        Throws:
        java.io.IOException - if an error occurs while reading.
      • getNumberFormatAt

        public java.lang.String getNumberFormatAt​(short fmtId)
        Get number format string given its id
        Specified by:
        getNumberFormatAt in interface Styles
        Parameters:
        fmtId - number format id
        Returns:
        number format code
      • putNumberFormat

        public int putNumberFormat​(java.lang.String fmt)
        Puts fmt in the numberFormats map if the format is not already in the the number format style table. Does nothing if fmt is already in number format style table.
        Specified by:
        putNumberFormat in interface Styles
        Parameters:
        fmt - the number format to add to number format style table
        Returns:
        the index of fmt in the number format style table
        Throws:
        java.lang.IllegalStateException - if adding the number format to the styles table would exceed the MAXIMUM_NUMBER_OF_DATA_FORMATS allowed.
      • putNumberFormat

        public void putNumberFormat​(short index,
                                    java.lang.String fmt)
        Add a number format with a specific ID into the numberFormats map. If a format with the same ID already exists, overwrite the format code with fmt This may be used to override built-in number formats.
        Specified by:
        putNumberFormat in interface Styles
        Parameters:
        index - the number format ID
        fmt - the number format code
      • removeNumberFormat

        public boolean removeNumberFormat​(short index)
        Remove a number format from the style table if it exists. All cell styles with this number format will be modified to use the default number format.
        Specified by:
        removeNumberFormat in interface Styles
        Parameters:
        index - the number format id to remove
        Returns:
        true if the number format was removed
      • removeNumberFormat

        public boolean removeNumberFormat​(java.lang.String fmt)
        Remove a number format from the style table if it exists All cell styles with this number format will be modified to use the default number format
        Specified by:
        removeNumberFormat in interface Styles
        Parameters:
        fmt - the number format to remove
        Returns:
        true if the number format was removed
      • putFont

        public int putFont​(XSSFFont font,
                           boolean forceRegistration)
        Records the given font in the font table. Will re-use an existing font index if this font matches another, EXCEPT if forced registration is requested. This allows people to create several fonts then customise them later. Note - End Users probably want to call XSSFFont.registerTo(StylesTable)
        Specified by:
        putFont in interface Styles
      • putFont

        public int putFont​(XSSFFont font)
        Description copied from interface: Styles
        Records the given font in the font table. Will re-use an existing font index if this font matches another.
        Specified by:
        putFont in interface Styles
      • getStyleAt

        public XSSFCellStyle getStyleAt​(int idx)
        Specified by:
        getStyleAt in interface Styles
        Parameters:
        idx - style index
        Returns:
        XSSFCellStyle or null if idx is out of bounds for xfs array
      • putBorder

        public int putBorder​(XSSFCellBorder border)
        Adds a border to the border style table if it isn't already in the style table Does nothing if border is already in borders style table
        Specified by:
        putBorder in interface Styles
        Parameters:
        border - border to add
        Returns:
        the index of the added border
      • getFonts

        public java.util.List<XSSFFont> getFonts()
      • getNumberFormats

        public java.util.Map<java.lang.Short,​java.lang.String> getNumberFormats()
      • putFill

        public int putFill​(XSSFCellFill fill)
        Adds a fill to the fill style table if it isn't already in the style table Does nothing if fill is already in fill style table
        Specified by:
        putFill in interface Styles
        Parameters:
        fill - fill to add
        Returns:
        the index of the added fill
      • putCellXf

        @Internal
        public int putCellXf​(CTXf cellXf)
        Adds a cell to the styles table. Does not check for duplicates.
        Parameters:
        cellXf - the cell to add to the styles table
        Returns:
        the added cell ID in the style table
      • replaceCellXfAt

        @Internal
        public void replaceCellXfAt​(int idx,
                                    CTXf cellXf)
      • getCellStyleXfAt

        @Internal
        public CTXf getCellStyleXfAt​(int idx)
      • putCellStyleXf

        @Internal
        public int putCellStyleXf​(CTXf cellStyleXf)
        Adds a cell style to the styles table. Does not check for duplicates.
        Parameters:
        cellStyleXf - the cell style to add to the styles table
        Returns:
        the cell style ID in the style table
      • getNumCellStyles

        public int getNumCellStyles()
        get the size of cell styles
        Specified by:
        getNumCellStyles in interface Styles
      • getNumDataFormats

        public int getNumDataFormats()
        Specified by:
        getNumDataFormats in interface Styles
        Returns:
        number of data formats in the styles table
      • _getStyleXfsSize

        @Internal
        public int _getStyleXfsSize()
        For unit testing only
      • _getDXfsSize

        @Internal
        public int _getDXfsSize()
      • writeTo

        public void writeTo​(java.io.OutputStream out)
                     throws java.io.IOException
        Write this table out as XML.
        Parameters:
        out - The stream to write to.
        Throws:
        java.io.IOException - if an error occurs while writing.
      • putDxf

        @Internal
        public int putDxf​(CTDxf dxf)
        Adds a Dxf to the style table Does not check for duplicates.
        Parameters:
        dxf - the Dxf to add
        Returns:
        added dxf ID in the style table
      • getExplicitTableStyle

        public TableStyle getExplicitTableStyle​(java.lang.String name)
        NOTE: this only returns explicitly defined styles
        Parameters:
        name - of the table style
        Returns:
        defined style, or null if not explicitly defined
        Since:
        3.17 beta 1
      • getExplicitTableStyleNames

        public java.util.Set<java.lang.String> getExplicitTableStyleNames()
        Returns:
        names of all explicitly defined table styles in the workbook
        Since:
        3.17 beta 1
      • getTableStyle

        public TableStyle getTableStyle​(java.lang.String name)
        Parameters:
        name - of the table style
        Returns:
        defined style, either explicit or built-in, or null if not found
        Since:
        3.17 beta 1
      • createCellStyle

        public XSSFCellStyle createCellStyle()
        Create a cell style in this style table. Note - End users probably want to call XSSFWorkbook.createCellStyle() rather than working with the styles table directly.
        Throws:
        java.lang.IllegalStateException - if the maximum number of cell styles has been reached.
      • findFont

        public XSSFFont findFont​(boolean bold,
                                 short color,
                                 short fontHeight,
                                 java.lang.String name,
                                 boolean italic,
                                 boolean strikeout,
                                 short typeOffset,
                                 byte underline)
        Finds a font that matches the one with the supplied attributes, where color is the indexed-value, not the actual color.
      • findFont

        public XSSFFont findFont​(boolean bold,
                                 Color color,
                                 short fontHeight,
                                 java.lang.String name,
                                 boolean italic,
                                 boolean strikeout,
                                 short typeOffset,
                                 byte underline)
        Finds a font that matches the one with the supplied attributes, where color is the actual Color-value, not the indexed color
      • getIndexedColors

        public IndexedColorMap getIndexedColors()
        Returns:
        default or custom indexed color to RGB mapping