4.5. Specify Cell Styles For Each ColumnΒΆ

Writers can specify cell Style for each column manually by styles attribute of writer classes.

Sample Code:
from pytablewriter import MarkdownTableWriter
from pytablewriter.style import Style

writer = MarkdownTableWriter()
writer.table_name = "set style by styles"
writer.headers = [
    "auto align",
    "left align",
    "center align",
    "bold",
    "italic",
    "bold italic ts",
]
writer.value_matrix = [
    [11, 11, 11, 11, 11, 11],
    [1234, 1234, 1234, 1234, 1234, 1234],
]

# specify styles for each column
writer.styles = [
    Style(),
    Style(align="left"),
    Style(align="center"),
    Style(font_weight="bold"),
    Style(font_style="italic"),
    Style(font_weight="bold", font_style="italic", thousand_separator=","),
]

writer.write_table()
Output:
# set style by styles
|auto align|left align|center align|  bold  |italic|bold italic ts|
|---------:|----------|:----------:|-------:|-----:|-------------:|
|        11|11        |     11     |  **11**|  _11_|      _**11**_|
|      1234|1234      |    1234    |**1234**|_1234_|   _**1,234**_|

Rendering result

You can also set Style to a specific column with index or header by using set_style method:

Sample Code:
from pytablewriter import MarkdownTableWriter
from pytablewriter.style import Style

writer = MarkdownTableWriter()
writer.headers = ["A", "B", "C",]
writer.value_matrix = [[11, 11, 11], [1234, 1234, 1234]]

writer.table_name = "set style by index"
writer.set_style(1, Style(align="center", font_weight="bold"))
writer.set_style(2, Style(thousand_separator=" "))
writer.write_table()
writer.write_null_line()

writer.table_name = "set style by header"
writer.set_style("B", Style(font_style="italic"))
writer.write_table()
Output:
# set style by index
| A  |   B    |  C  |
|---:|:------:|----:|
|  11| **11** |   11|
|1234|**1234**|1 234|

# set style by header
| A  |  B   |  C  |
|---:|-----:|----:|
|  11|  _11_|   11|
|1234|_1234_|1 234|