A “theme” refers to a collection of predefined design elements that can be applied to a workbook, worksheet, chart, or any other element within Excel. Themes include a combination of colors, fonts, and effects that provide a consistent look of the workbooks.
By using themes, you can quickly change the overall look of workbook without needing to individually format each component.
A theme of a workbook is represented by the
IXLTheme interface. It can be
The theme consists of three parts:
Color scheme - colors that can be used in a workbook.
Font scheme - two fonts that can be used in a workbook.
Effects - how should various objects look like, mostly shapes.
A new created workbook has its theme set to the Office 2007-2010.
Each theme part can be modified independently of others. In order to modify the
theme, change the properties of the
using var wb = new XLWorkbook(); var ws = wb.AddWorksheet(); var red = XLColor.FromHtml("FF0000"); wb.Theme.Text2 = red; wb.SaveAs("theme-modified.xlsx");
Only theme colors are loaded/saved from/to a workbook.
As of 0.103, there is no capability to load font scheme or effects. The font scheme and effects saved to the file are always Office 2007-2010.
Themes displayed in Excel are version dependent, Microsoft might add or remove themes across versions.
The Excel will highlight/select the theme in GUI depending on the values of the theme (e.g. color values from the color scheme), not the theme name.
If the values of a part in a workbook don’t match any Excel predefined values, no predefined item is highlighted.
The theme color can be created from static method
XLColor.FromTheme(XLThemeColor). The theme color is a symbolic name and
doesn’t contain actual color value. The color can be used by any API that
XLColor, e.g. cell fill, font color, sparkline and others.
using var wb = new XLWorkbook(); var ws = wb.AddWorksheet(); var accent2ThemeColor = XLColor.FromTheme(XLThemeColor.Accent2); ws.Cell("A1").Style.Fill.BackgroundColor = accent2ThemeColor; wb.SaveAs("theme-color-picker-font-color.xlsx");
The actual displayed color is determined by a theme and when theme colors change, so does the fill color.
In order to get actual RGB value of a theme color, either use
XLWorkbook.Theme.ResolveThemeColor(XLThemeColor) or one of
XLColor.Color throws an exception, because
XLColor is a value
object independent of a workbook and thus has no way to resolve the color
by itself and other potential problems (e.g. use color from one workbook
in a different workbook).
Theme contains two font specifications, called major and minor font scheme.
To assign one of the font schemes to a text, set the the font property
IXLFontBase.FontScheme to one of the schemes.
The font scheme can be set to any text through its font property. The font of such text is updated, when a font scheme is changed in a theme.
using var wb = new XLWorkbook(); var ws = wb.AddWorksheet(); ws.Cell("A1") .SetValue("Major") .Style.Font.SetFontScheme(XLFontScheme.Major); ws.Cell("A1") .SetValue("Minor") .Style.Font.SetFontScheme(XLFontScheme.Minor); wb.SaveAs("theme-font-scheme.xlsx");
Effects are not implemented.