用Python生成HTML表格的方法示例

作者:fasionchan 时间:2023-10-16 02:27:34 

在 邮件报表 之类的开发任务中,需要生成 HTML 表格。

使用 Python 生成 HTML 表格基本没啥难度, for 循环遍历一遍数据并输出标签即可。 如果需要实现合并单元格,或者按需调整表格样式,就比较麻烦了。

这时,可以试试本文的主角 —— html-table 包,借助它可生成各种样式的 HTML 表格。 接下来,以一个简单的例子演示 html-table 的常用用法:

用Python生成HTML表格的方法示例

开始之前,须通过 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> 标签; table0 取出第一个单元格,对应 名称 ; table0.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)

来源:https://segmentfault.com/a/1190000021929327

标签:Python,HTML,表格
0
投稿

猜你喜欢

  • 手把手教你Navicat如何导出Excel格式的表结构

    2024-01-20 21:39:36
  • python实现吃苹果小游戏

    2023-08-25 19:25:45
  • “mailto”的六则应用技巧

    2008-08-29 13:16:00
  • python统计函数库scipy.stats的用法解析

    2022-08-12 07:15:32
  • 使用python将图片按标签分入不同文件夹的方法

    2021-04-14 05:34:54
  • python 包之 multiprocessing 多进程

    2021-02-25 12:13:15
  • vue3缓存页面keep-alive及路由统一处理详解

    2024-05-02 16:34:12
  • Vue.js 的过滤器你了解多少

    2024-04-28 09:26:37
  • 浅析BootStrap模态框的使用(经典)

    2023-08-20 02:21:19
  • JSP使用MVC模式完成删除和修改功能实例详解

    2024-03-20 03:39:42
  • python里运用私有属性和方法总结

    2023-03-29 15:33:57
  • python文件读取和导包的绝对路径、相对路径详解

    2021-04-12 03:27:05
  • Centos部署django服务nginx+uwsgi的方法

    2022-03-18 07:47:26
  • asp.net TreeView与XML三步生成列表树

    2024-06-05 09:32:31
  • golang定时任务cron项目实操指南

    2023-08-26 00:21:40
  • 详解pyqt5的UI中嵌入matplotlib图形并实时刷新(挖坑和填坑)

    2023-01-04 22:01:05
  • 200 行python 代码实现 2048 游戏

    2021-08-06 16:17:35
  • MySQL优化之数据表的处理

    2008-12-22 14:45:00
  • Python使用apscheduler模块设置定时任务的实现

    2021-05-01 05:01:54
  • 如何在Python中引用其他模块

    2022-09-26 23:30:21
  • asp之家 网络编程 m.aspxhome.com