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 intThe first style id available for use as a custom style -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionintintFor unit testing onlyprotected voidcommit()Save the content in the underlying package part.Create a cell style in this style table.voidIf there isn't currently aThemesTablefor 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.CTXfgetCellStyleXfAt(int idx) org.openxmlformats.schemas.spreadsheetml.x2006.main.CTXfgetCellXfAt(int idx) org.openxmlformats.schemas.spreadsheetml.x2006.main.CTStylesheetFor unit testing only!org.openxmlformats.schemas.spreadsheetml.x2006.main.CTDxfgetDxfAt(int idx) getExplicitTableStyle(String name) NOTE: this only returns explicitly defined stylesgetFillAt(int idx) getFills()getFontAt(int idx) getFonts()intGet 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 idintget the size of cell stylesintgetStyleAt(int idx) getTableStyle(String name) getTheme()Get the current Workbook's theme table, or null if the Workbook lacks any themes.intputBorder(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 tableintputCellStyleXf(org.openxmlformats.schemas.spreadsheetml.x2006.main.CTXf cellStyleXf) Adds a cell style to the styles table.intputCellXf(org.openxmlformats.schemas.spreadsheetml.x2006.main.CTXf cellXf) Adds a cell to the styles table.intputDxf(org.openxmlformats.schemas.spreadsheetml.x2006.main.CTDxf dxf) Adds a Dxf to the style table Does not check for duplicates.intputFill(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 tableintRecords the given font in the font table.intRecords the given font in the font table.voidputNumberFormat(short index, String fmt) Add a number format with a specific ID into the numberFormats map.intputNumberFormat(String fmt) Putsfmtin the numberFormats map if the format is not already in the the number format style table.intputStyle(XSSFCellStyle style) voidreadFrom(InputStream is) Read this shared styles table from an XML file.booleanremoveNumberFormat(short index) Remove a number format from the style table if it exists.booleanremoveNumberFormat(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 voidreplaceCellStyleXfAt(int idx, org.openxmlformats.schemas.spreadsheetml.x2006.main.CTXf cellStyleXf) voidreplaceCellXfAt(int idx, org.openxmlformats.schemas.spreadsheetml.x2006.main.CTXf cellXf) voidsetMaxNumberOfDataFormats(int num) Changes the maximum number of data formats that may be in a style tablevoidsetTheme(ThemesTable theme) voidvoidwriteTo(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 aThemesTablefor 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:
getNumberFormatAtin interfaceStyles- Parameters:
fmtId- number format id- Returns:
- number format code
-
putNumberFormat
Putsfmtin the numberFormats map if the format is not already in the the number format style table. Does nothing iffmtis already in number format style table.- Specified by:
putNumberFormatin interfaceStyles- Parameters:
fmt- the number format to add to number format style table- Returns:
- the index of
fmtin the number format style table - Throws:
IllegalStateException- if adding the number format to the styles table would exceed theMAXIMUM_NUMBER_OF_DATA_FORMATSallowed.
-
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 withfmtThis may be used to override built-in number formats.- Specified by:
putNumberFormatin 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:
removeNumberFormatin 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:
removeNumberFormatin 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:StylesRecords the given font in the font table. Will re-use an existing font index if this font matches another. -
getStyleAt
- Specified by:
getStyleAtin interfaceStyles- Parameters:
idx- style index- Returns:
- XSSFCellStyle or null if idx is out of bounds for xfs array
-
putStyle
-
getBorderAt
- Specified by:
getBorderAtin 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:
getNumCellStylesin interfaceStyles
-
getNumDataFormats
public int getNumDataFormats()- Specified by:
getNumDataFormatsin 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:POIXMLDocumentPartSave 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:
commitin 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
-