Package org.apache.poi.xssf.model
Class StylesTable
- java.lang.Object
-
- org.apache.poi.ooxml.POIXMLDocumentPart
-
- org.apache.poi.xssf.model.StylesTable
-
- All Implemented Interfaces:
Styles
public class StylesTable extends POIXMLDocumentPart implements Styles
Table of styles shared across all sheets in a workbook.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.poi.ooxml.POIXMLDocumentPart
POIXMLDocumentPart.RelationPart
-
-
Field Summary
Fields Modifier and Type Field Description static int
FIRST_CUSTOM_STYLE_ID
The first style id available for use as a custom style
-
Constructor Summary
Constructors Constructor Description StylesTable()
Create a new, empty StylesTableStylesTable(PackagePart part)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
_getDXfsSize()
int
_getStyleXfsSize()
For unit testing onlyXSSFCellStyle
createCellStyle()
Create a cell style in this style table.void
ensureThemesTable()
If there isn't currently aThemesTable
for the current Workbook, then creates one and sets it up.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.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 colorXSSFCellBorder
getBorderAt(int idx)
java.util.List<XSSFCellBorder>
getBorders()
CTXf
getCellStyleXfAt(int idx)
CTXf
getCellXfAt(int idx)
CTStylesheet
getCTStylesheet()
For unit testing only!CTDxf
getDxfAt(int idx)
TableStyle
getExplicitTableStyle(java.lang.String name)
NOTE: this only returns explicitly defined stylesjava.util.Set<java.lang.String>
getExplicitTableStyleNames()
XSSFCellFill
getFillAt(int idx)
java.util.List<XSSFCellFill>
getFills()
XSSFFont
getFontAt(int idx)
java.util.List<XSSFFont>
getFonts()
IndexedColorMap
getIndexedColors()
int
getMaxNumberOfDataFormats()
Get the upper limit on the number of data formats that has been set for the style table.java.lang.String
getNumberFormatAt(short fmtId)
Get number format string given its idjava.util.Map<java.lang.Short,java.lang.String>
getNumberFormats()
int
getNumCellStyles()
get the size of cell stylesint
getNumDataFormats()
XSSFCellStyle
getStyleAt(int idx)
TableStyle
getTableStyle(java.lang.String name)
ThemesTable
getTheme()
Get the current Workbook's theme table, or null if the Workbook lacks any themes.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 tableint
putCellStyleXf(CTXf cellStyleXf)
Adds a cell style to the styles table.int
putCellXf(CTXf cellXf)
Adds a cell to the styles table.int
putDxf(CTDxf dxf)
Adds a Dxf to the style table Does not check for duplicates.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 tableint
putFont(XSSFFont font)
Records the given font in the font table.int
putFont(XSSFFont font, boolean forceRegistration)
Records the given font in the font table.void
putNumberFormat(short index, java.lang.String fmt)
Add a number format with a specific ID into the numberFormats map.int
putNumberFormat(java.lang.String fmt)
Putsfmt
in the numberFormats map if the format is not already in the the number format style table.int
putStyle(XSSFCellStyle style)
void
readFrom(java.io.InputStream is)
Read this shared styles table from an XML file.boolean
removeNumberFormat(short index)
Remove a number format from the style table if it exists.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 formatvoid
replaceCellXfAt(int idx, CTXf cellXf)
void
setMaxNumberOfDataFormats(int num)
Changes the maximum number of data formats that may be in a style tablevoid
setTheme(ThemesTable theme)
void
setWorkbook(XSSFWorkbook wb)
void
writeTo(java.io.OutputStream out)
Write this table out as XML.-
Methods inherited from class org.apache.poi.ooxml.POIXMLDocumentPart
_invokeOnDocumentRead, addRelation, createRelationship, createRelationship, createRelationship, getPackagePart, getParent, getRelationById, getRelationId, getRelationPartById, getRelationParts, getRelations, isCommited, setCommited, toString
-
-
-
-
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
- ifnum
< 0java.lang.IllegalStateException
- ifnum
< 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, usegetNumDataFormats()
.- 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 aThemesTable
for the current Workbook, then creates one and sets it up. After this, calls togetTheme()
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 interfaceStyles
- Parameters:
fmtId
- number format id- Returns:
- number format code
-
putNumberFormat
public int putNumberFormat(java.lang.String fmt)
Putsfmt
in the numberFormats map if the format is not already in the the number format style table. Does nothing iffmt
is already in number format style table.- Specified by:
putNumberFormat
in interfaceStyles
- 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 theMAXIMUM_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 withfmt
This may be used to override built-in number formats.- Specified by:
putNumberFormat
in interfaceStyles
- Parameters:
index
- the number format IDfmt
- 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 interfaceStyles
- 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 interfaceStyles
- 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 callXSSFFont.registerTo(StylesTable)
-
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.
-
getStyleAt
public XSSFCellStyle getStyleAt(int idx)
- Specified by:
getStyleAt
in interfaceStyles
- Parameters:
idx
- style index- Returns:
- XSSFCellStyle or null if idx is out of bounds for xfs array
-
putStyle
public int putStyle(XSSFCellStyle style)
-
getBorderAt
public XSSFCellBorder getBorderAt(int idx)
- Specified by:
getBorderAt
in interfaceStyles
-
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
-
getFillAt
public XSSFCellFill getFillAt(int idx)
-
getBorders
public java.util.List<XSSFCellBorder> getBorders()
-
getFills
public java.util.List<XSSFCellFill> getFills()
-
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
-
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
-
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 interfaceStyles
-
getNumDataFormats
public int getNumDataFormats()
- Specified by:
getNumDataFormats
in interfaceStyles
- Returns:
- number of data formats in the styles table
-
_getStyleXfsSize
@Internal public int _getStyleXfsSize()
For unit testing only
-
getCTStylesheet
@Internal public CTStylesheet getCTStylesheet()
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 callXSSFWorkbook.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
-
-