用Python生成HTML表格的方法示例
作者:fasionchan 发布时间:2023-10-16 02:27:34
在 邮件报表 之类的开发任务中,需要生成 HTML 表格。
使用 Python 生成 HTML 表格基本没啥难度, for 循环遍历一遍数据并输出标签即可。 如果需要实现合并单元格,或者按需调整表格样式,就比较麻烦了。
这时,可以试试本文的主角 —— 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>
标签; 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


猜你喜欢
- 您可以使用 ObjectContext 对象提交或放弃一项由 Microsoft Transaction Server (MTS) 管理的事
- 区别: 1、主键,Oracle不可以实现自增,mysql可以实现自增。 oracle新建序列,SEQ_USER_Id.nextval 2、索
- 这篇文章主要介绍了Python enumerate函数遍历数据对象组合过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定
- 同一进程下的多个线程共享内存数据,多个线程之间没有主次关系,相互之间可以操作;cpu执行的都是线程,默认程序会开一个主线程;进程是程序以及和
- 遇到的问题当时自己在使用Alexnet训练图像分类问题时,会出现损失在一个epoch中增加,换做下一个epoch时loss会骤然降低,一开始
- 本文实例为大家分享了vue点击图片放大展示的具体代码,供大家参考,具体内容如下1.建立子组件,来实现图片方 * 能: BigImg.vue&l
- 目的:方便调试,查看中间结果,因为觉得设断点调试相对麻烦。【运行环境:macOS 10.13.3,PyCharm 2017.2.4】老手:选
- 本文实例讲述了JavaScript对象的浅拷贝和深拷贝。分享给大家供大家参考,具体如下:1、浅拷贝仅仅复制对象的引用,而不是对象本身。var
- request post 列表的方法今天拿着已经写好的服务接口, 尝试传送一些列表, 发现传送的结果跟实际传送的数据并不一致,然后又开始了漫
- 传参时传递可变对象,实际上传的是指向内存地址的指针/引用这个标题是我的结论,也是我在做项目过程查到的。学过C的都知道,函数传参可以传值,也可
- python提取照片坐标信息的代码如下所示:from PIL import Imagefrom PIL.ExifTags import TA
- 我们提倡无论何时都尽可能地使用CSS,这样我们更容易取得成功.现在浏览器对CSS的支持已经非常好,肯定足以让你用来控制你的网页布局与排版.但
- 背景在业务数据统计分析中基本都会涉及到各省区的分析,数据可视化是数据分析的一把利器,这些省区的数据一般会用地图可视化出来,这样一些规律可以被
- 再之前同时安装 python 后 只需把环境变量PATH 里面改为PATH=C:\Python36-32\Scripts\;C:\Pytho
- 前言:随着互联网技术的不断发展, MySQL 相关生态也越来越完善,越来越多的工具涌现出来。一些公司或个人纷纷开源出一些不错的工具,本篇文章
- 数据集介绍《悲惨世界》中的人物关系图,图中共77个节点、254条边。数据集截图:打开README文件:Les Misérables netw
- 实例如下所示:>> A=[1,2,3;4,5,6;7,8,9]A = 1 2 3  
- Python 网页解析HTMLParse的实例详解使用python将网页抓取下来之后,下一步我们就应该解析网页,提取我们所需要的内容了,在p
- 前言我的 App 项目的 API 部分是使用 Django REST Framework 来搭建的,它可以像搭积木一样非常方便地搭出 API
- 本XML系列教程将分三部分发布,到最后一期我们将拥有一个功能全面,更加友好的XML菜单。本教程这个第一期涉及到了一些XML的基础知识。大家都