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


Posted in Python onMarch 06, 2020

在 邮件报表 之类的开发任务中,需要生成 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)

到此这篇关于用Python生成HTML表格的方法示例的文章就介绍到这了,更多相关Python生成HTML表格内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中的装饰器用法详解
Jan 14 Python
Python编程修改MP3文件名称的方法
Apr 19 Python
python实现机械分词之逆向最大匹配算法代码示例
Dec 13 Python
浅谈Python的list中的选取范围
Nov 12 Python
python requests 库请求带有文件参数的接口实例
Jan 03 Python
Appium+Python自动化测试之运行App程序示例
Jan 23 Python
python获取网络图片方法及整理过程详解
Dec 20 Python
从多个tfrecord文件中无限读取文件的例子
Feb 17 Python
Python enumerate内置库用法解析
Feb 24 Python
Python内置函数及功能简介汇总
Oct 13 Python
一篇文章搞懂python混乱的切换操作与优雅的推导式
Aug 23 Python
Python的property属性详细讲解
Apr 11 Python
使用Python第三方库pygame写个贪吃蛇小游戏
Mar 06 #Python
Python修改列表值问题解决方案
Mar 06 #Python
浅谈matplotlib.pyplot与axes的关系
Mar 06 #Python
python-xpath获取html文档的部分内容
Mar 06 #Python
关于python中的xpath解析定位
Mar 06 #Python
Python网络爬虫信息提取mooc代码实例
Mar 06 #Python
appium+python adb常用命令分享
Mar 06 #Python
You might like
PHP5与MySQL数据库操作常用代码 收集
2010/03/21 PHP
php更改目录及子目录下所有的文件后缀的代码
2010/09/24 PHP
使用php伪造referer的方法 利用referer防止图片盗链
2014/01/20 PHP
Yii隐藏URL中index.php的方法
2016/07/12 PHP
技术男用来对妹子表白的百度首页
2014/07/23 Javascript
js HTML5多图片上传及预览实例解析(不含前端的文件分割)
2016/08/26 Javascript
JavaScript职责链模式概述
2016/09/17 Javascript
浅谈js对象属性 通过点(.) 和方括号([]) 的不同之处
2016/10/29 Javascript
深入理解jquery中extend的实现
2016/12/22 Javascript
canvas实现图像布局填充功能
2017/02/06 Javascript
Vue CLI3 如何支持less的方法示例
2018/08/29 Javascript
vue-cli脚手架的安装教程图解
2018/09/02 Javascript
jQuery ajax仿Google自动提示SearchSuggess功能示例
2019/03/28 jQuery
微信公众号服务器验证Token步骤图解
2019/12/30 Javascript
Vue 组件复用多次自定义参数操作
2020/07/27 Javascript
[46:12]完美世界DOTA2联赛循环赛 DM vs Matador BO2第一场 11.04
2020/11/04 DOTA
python类定义的讲解
2013/11/01 Python
python函数装饰器用法实例详解
2015/06/04 Python
django js实现部分页面刷新的示例代码
2018/05/28 Python
python flask框架实现重定向功能示例
2019/07/02 Python
使用python实现滑动验证码功能
2019/08/05 Python
Python 实现Numpy中找出array中最大值所对应的行和列
2019/11/26 Python
Python字符串的修改方法实例
2019/12/19 Python
利用Vscode进行Python开发环境配置的步骤
2020/06/22 Python
python 从list中随机取值的方法
2020/11/16 Python
Python绘制K线图之可视化神器pyecharts的使用
2021/03/02 Python
pandas数据分组groupby()和统计函数agg()的使用
2021/03/04 Python
数据库专业英语
2012/11/30 面试题
Windows和Linux动态库应用异同
2016/04/17 面试题
毕业证丢失证明
2014/01/15 职场文书
转预备党员政审材料
2014/02/06 职场文书
后勤主管岗位职责
2014/03/01 职场文书
《世界多美呀》教学反思
2014/03/02 职场文书
生产文员岗位职责
2014/04/05 职场文书
求职简历自荐信怎么写
2015/03/26 职场文书
行政诉讼答辩状
2015/05/21 职场文书