Python生成HTML表格实战:html-table库合并单元格与样式定制
本文介绍如何利用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表格的相关内容可参考本站历史文章或继续浏览后续内容,感谢支持。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













