Python生成HTML表格实战:html-table库合并单元格与样式定制

周末不加班
周末不加班
发布时间:2026-10-13 | 2人浏览过
原创

本文介绍如何利用Python的html-table库生成复杂的HTML表格。通过实例演示从安装配置到创建表格、处理合并单元格及自定义CSS样式的完整流程,重点讲解rowspan和colspan的使用,以及如何精细化控制表格边框、字体及背景颜色,适用于邮件报表等需要动态生成HTML的场景。

Python生成HTML表格的应用场景

在开发邮件报表等任务时,通常需要生成HTML格式的表格数据。

利用Python生成基础HTML表格并不复杂,只需通过for循环遍历数据并输出相应的HTML标签即可。然而,若需实现单元格合并或按需定制表格样式,手动编写代码则会变得繁琐。

html-table库安装与基础使用

此时,推荐使用本文介绍的html-table库,该库能够轻松生成各种样式的HTML表格。下文将通过一个具体示例,展示html-table库的常用操作方法。

使用前,需通过pip命令安装html-table库。


$ python -m pip install html-table

安装完成后,即可在代码中导入HTMLTable类。


from HTMLTable import (
  HTMLTable,
)

创建表格与处理合并单元格

首先创建一个新表格实例,并设置标题为“果园收成表”。


# 标题
table = HTMLTable(caption='果园收成表')

接着添加表头信息。


# 表头行
table.append_header_rows((
  ('名称',  '产量 (吨)',  '环比',       ''),
  ('',    '',       '增长量 (吨)',   '增长率 (%)'),
))

观察表头结构可知,其分为两行显示,部分单元格需要进行合并,且被合并的单元格需保留空位以维持表格结构。

接下来配置单元格的合并规则。


# 合并单元格
table[0][0].attr.rowspan = 2
table[0][1].attr.rowspan = 2
table[0][2].attr.colspan = 2

通过table[0]获取第一行,即第一个<tr>标签;再通过table[0][0]获取该行第一个单元格,对应“名称”列。table[0][0].attr用于访问该<th>标签的属性。由于该单元格需向下合并一个单元格,因此需将属性rowspan设置为2。

随后添加数据行,操作方式与表头类似,本例共包含3行数据。


# 数据行
table.append_data_rows((
  ('荔枝', 11, 1, 10),
  ('芒果', 9, -1, -10),
  ('香蕉', 6, 1, 20),
))

表格样式定制与细节优化

数据准备就绪后,即可开始调整表格样式。首先设置表格标题的显示效果。


# 标题样式
table.caption.set_style({
  'font-size': '15px',
})

为<table>标签定义具体样式。


# 表格样式,即<table>标签样式
table.set_style({
  'border-collapse': 'collapse',
  'word-break': 'keep-all',
  'white-space': 'nowrap',
  'font-size': '14px',
})

上述CSS样式应用于<table>标签,从而作用于整个表格,可控制边框、字体大小等全局属性。需要注意的是,后续针对特定单元格(如表头)的样式设置可能会覆盖部分全局样式(如字体大小)。

随后,为每个单元格设置样式,主要规定边框的具体表现。


# 统一设置所有单元格样式,<td>或<th>
table.set_cell_style({
  'border-color': '#000',
  'border-width': '1px',
  'border-style': 'solid',
  'padding': '5px',
})

接着,专门针对表头单元格设置样式,包括颜色、字体大小及内边距。


# 表头样式
table.set_header_row_style({
  'color': '#fff',
  'background-color': '#48a6fb',
  'font-size': '18px',
})

# 覆盖表头单元格字体样式
table.set_header_cell_style({
  'padding': '15px',
})

set_header_row_style方法将样式应用于表头的两个<tr>标签;set_header_cell_style方法则将样式应用于每个<th>标签。建议尽量将颜色等样式属性设置在<tr>标签上,而非<th>标签,以精简最终生成的HTML代码。

对于次级表头的字体大小调整,此处不再赘述。


# 调小次表头字体大小
table[1].set_cell_style({
  'padding': '8px',
  'font-size': '15px',
})

遍历每一行数据,若第2个单元格的值小于0,则设置背景颜色为红色以作标识。


# 遍历数据行,如果增长量为负,标红背景颜色
for row in table.iter_data_rows():
  if row[2].value < 0:
    row.set_style({
      'background-color': '#ffdddd',
    })

最后,生成最终的HTML文本字符串。


html = table.to_html()
print(html)

以上就是关于使用Python生成HTML表格的方法示例,更多Python生成HTML表格的相关内容可参考本站历史文章或继续浏览后续内容,感谢支持。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表