How to: Create and Apply a New Table Style

  • 3 minutes to read

A workbook contains a collection of table styles used to format tables. The IWorkbook.TableStyles property returns the TableStyleCollection object, which specifies the workbook's collection of table styles. By default, this collection contains built-in table styles similar to Microsoft® Excel® and the None table style, which specifies that no formatting should be applied to the table. If you create custom table styles, they are also placed in the workbook's table style collection.

This example demonstrates how to create a custom style to format tables.

  1. Add a new table style to the IWorkbook.TableStyles collection by calling the TableStyleCollection.Add method with the table style name passed as a parameter. This method returns the TableStyle object that represents the newly created table style. This object's TableStyle.Name property is set to the specified name. Other settings are identical to the None table style (the default built-in table style that specifies no formatting for a table).

    NOTE

    Note that table styles have unique names in the collection. To ensure that there is no table style under the specified name in the collection, use the TableStyleCollection.Contains method.

  2. Modify elements of the created table style (TableStyle.TableStyleElements) within the TableStyle.BeginUpdate and TableStyle.EndUpdate paired methods.
' Access a table.
Dim table As Table = worksheet.Tables(0)

Dim styleName As String = "testTableStyle"

' If the style under the specified name already exists in the collection,
If workbook.TableStyles.Contains(styleName) Then
    ' apply this style to the table.
    table.Style = workbook.TableStyles(styleName)
Else
    ' Add a new table style under the "testTableStyle" name to the TableStyles collection.

    Dim customTableStyle_Renamed As TableStyle = workbook.TableStyles.Add("testTableStyle")

    ' Modify the required formatting characteristics of the table style. 
    ' Specify the format for different table elements.
    customTableStyle_Renamed.BeginUpdate()
    Try
        customTableStyle_Renamed.TableStyleElements(TableStyleElementType.WholeTable).Font.Color = Color.FromArgb(107, 107, 107)

        ' Specify formatting characteristics for the table header row. 
        Dim headerRowStyle As TableStyleElement = customTableStyle_Renamed.TableStyleElements(TableStyleElementType.HeaderRow)
        headerRowStyle.Fill.BackgroundColor = Color.FromArgb(64, 66, 166)
        headerRowStyle.Font.Color = Color.White
        headerRowStyle.Font.Bold = True

        ' Specify formatting characteristics for the table total row. 
        Dim totalRowStyle As TableStyleElement = customTableStyle_Renamed.TableStyleElements(TableStyleElementType.TotalRow)
        totalRowStyle.Fill.BackgroundColor = Color.FromArgb(115, 193, 211)
        totalRowStyle.Font.Color = Color.White
        totalRowStyle.Font.Bold = True

        ' Specify banded row formatting for the table.
        Dim secondRowStripeStyle As TableStyleElement = customTableStyle_Renamed.TableStyleElements(TableStyleElementType.SecondRowStripe)
        secondRowStripeStyle.Fill.BackgroundColor = Color.FromArgb(234, 234, 234)
        secondRowStripeStyle.StripeSize = 1
    Finally
        customTableStyle_Renamed.EndUpdate()
    End Try
    ' Apply the created custom style to the table.
    table.Style = customTableStyle_Renamed
End If