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
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
FieldsModifier and TypeFieldDescriptionstatic final int
The first style id available for use as a custom style -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionint
int
For unit testing onlyprotected void
commit()
Save the content in the underlying package part.Create a cell style in this style table.void
If there isn't currently aThemesTable
for the current Workbook, then creates one and sets it up.findFont
(boolean bold, short color, short fontHeight, 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
(boolean bold, Color color, short fontHeight, 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 colorgetBorderAt
(int idx) org.openxmlformats.schemas.spreadsheetml.x2006.main.CTXf
getCellStyleXfAt
(int idx) org.openxmlformats.schemas.spreadsheetml.x2006.main.CTXf
getCellXfAt
(int idx) org.openxmlformats.schemas.spreadsheetml.x2006.main.CTStylesheet
For unit testing only!org.openxmlformats.schemas.spreadsheetml.x2006.main.CTDxf
getDxfAt
(int idx) getExplicitTableStyle
(String name) NOTE: this only returns explicitly defined stylesgetFillAt
(int idx) getFills()
getFontAt
(int idx) getFonts()
int
Get the upper limit on the number of data formats that has been set for the style table.getNumberFormatAt
(short fmtId) Get number format string given its idint
get the size of cell stylesint
getStyleAt
(int idx) getTableStyle
(String name) 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
(org.openxmlformats.schemas.spreadsheetml.x2006.main.CTXf cellStyleXf) Adds a cell style to the styles table.int
putCellXf
(org.openxmlformats.schemas.spreadsheetml.x2006.main.CTXf cellXf) Adds a cell to the styles table.int
putDxf
(org.openxmlformats.schemas.spreadsheetml.x2006.main.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
Records the given font in the font table.int
Records the given font in the font table.void
putNumberFormat
(short index, String fmt) Add a number format with a specific ID into the numberFormats map.int
putNumberFormat
(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
(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
(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 formatprotected void
replaceCellStyleXfAt
(int idx, org.openxmlformats.schemas.spreadsheetml.x2006.main.CTXf cellStyleXf) void
replaceCellXfAt
(int idx, org.openxmlformats.schemas.spreadsheetml.x2006.main.CTXf cellXf) void
setMaxNumberOfDataFormats
(int num) Changes the maximum number of data formats that may be in a style tablevoid
setTheme
(ThemesTable theme) void
void
writeTo
(OutputStream out) Write this table out as XML.Methods inherited from class org.apache.poi.ooxml.POIXMLDocumentPart
_invokeOnDocumentRead, addRelation, createRelationship, createRelationship, createRelationship, getNextPartNumber, getPackagePart, getParent, getRelationById, getRelationId, getRelationPartById, getRelationParts, getRelations, getTargetPart, isCommited, onDocumentCreate, onDocumentRead, onDocumentRemove, onSave, prepareForCommit, read, rebase, removeRelation, removeRelation, removeRelation, setCommited, toString
-
Field Details
-
FIRST_CUSTOM_STYLE_ID
public static final int FIRST_CUSTOM_STYLE_IDThe first style id available for use as a custom style- See Also:
-
-
Constructor Details
-
StylesTable
public StylesTable()Create a new, empty StylesTable -
StylesTable
- Throws:
IOException
- Since:
- POI 3.14-Beta1
-
-
Method Details
-
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:
IllegalArgumentException
- ifnum
< 0IllegalStateException
- 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
-
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
-
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
Read this shared styles table from an XML file.- Parameters:
is
- The input stream containing the XML document.- Throws:
IOException
- if an error occurs while reading.
-
getNumberFormatAt
Get number format string given its id- Specified by:
getNumberFormatAt
in interfaceStyles
- Parameters:
fmtId
- number format id- Returns:
- number format code
-
putNumberFormat
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:
IllegalStateException
- if adding the number format to the styles table would exceed theMAXIMUM_NUMBER_OF_DATA_FORMATS
allowed.
-
putNumberFormat
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
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
-
getFontAt
-
putFont
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
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
- Specified by:
getStyleAt
in interfaceStyles
- Parameters:
idx
- style index- Returns:
- XSSFCellStyle or null if idx is out of bounds for xfs array
-
putStyle
-
getBorderAt
- Specified by:
getBorderAt
in interfaceStyles
-
putBorder
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
-
getBorders
-
getFills
-
getFonts
-
getNumberFormats
-
putFill
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 -
getCellXfAt
-
putCellXf
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, org.openxmlformats.schemas.spreadsheetml.x2006.main.CTXf cellXf) -
getCellStyleXfAt
-
putCellStyleXf
@Internal public int putCellStyleXf(org.openxmlformats.schemas.spreadsheetml.x2006.main.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
-
replaceCellStyleXfAt
@Internal protected void replaceCellStyleXfAt(int idx, org.openxmlformats.schemas.spreadsheetml.x2006.main.CTXf cellStyleXf) -
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
For unit testing only -
getCTStylesheet
For unit testing only! -
_getDXfsSize
-
writeTo
Write this table out as XML.- Parameters:
out
- The stream to write to.- Throws:
IOException
- if an error occurs while writing.
-
commit
Description copied from class:POIXMLDocumentPart
Save the content in the underlying package part. Default implementation is empty meaning that the package part is left unmodified.Sub-classes should override and add logic to marshal the "model" into Ooxml4J.
For example, the code saving a generic XML entry may look as follows:
protected void commit() throws IOException { PackagePart part = getPackagePart(); OutputStream out = part.getOutputStream(); XmlObject bean = getXmlBean(); //the "model" which holds changes in memory bean.save(out, DEFAULT_XML_OPTIONS); out.close(); }
- Overrides:
commit
in classPOIXMLDocumentPart
- Throws:
IOException
- a subclass may throw an IOException if the changes can't be committed
-
getDxfAt
-
putDxf
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
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
- Returns:
- names of all explicitly defined table styles in the workbook
- Since:
- 3.17 beta 1
-
getTableStyle
- 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
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:
IllegalStateException
- if the maximum number of cell styles has been reached.
-
findFont
public XSSFFont findFont(boolean bold, short color, short fontHeight, 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, 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
- Returns:
- default or custom indexed color to RGB mapping
-