用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实现将汉字转换成汉语拼音的库
May 05 Python
使用Python多线程爬虫爬取电影天堂资源
Sep 23 Python
python好玩的项目—色情图片识别代码分享
Nov 07 Python
python爬虫爬取某站上海租房图片
Feb 04 Python
python模仿网页版微信发送消息功能
Feb 24 Python
对python中大文件的导入与导出方法详解
Dec 28 Python
Django数据库连接丢失问题的解决方法
Dec 29 Python
python上传时包含boundary时的解决方法
Apr 08 Python
jupyter notebook tensorflow打印device信息实例
Apr 20 Python
python对一个数向上取整的实例方法
Jun 18 Python
基于Python采集爬取微信公众号历史数据
Nov 27 Python
使paramiko库执行命令时在给定的时间强制退出功能的实现
Mar 03 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
Windows下的PHP5.0详解
2006/11/18 PHP
php array_merge下进行数组合并的代码
2008/07/22 PHP
php截取中文字符串不乱码的方法
2013/12/25 PHP
Yii2超好用的日期和时间组件(值得收藏)
2016/05/05 PHP
jquery创建并行对象或者合并对象的实现代码
2012/10/10 Javascript
JavaScript中OnLoad几种使用方法
2012/12/15 Javascript
jQuery实现的在线答题功能
2015/04/12 Javascript
牛叉的Jquery——Jquery与DOM对象的互相转换及DOM的三种操作
2015/10/29 Javascript
Vue.js 2.0 和 React、Augular等其他前端框架大比拼
2016/10/08 Javascript
深入了解JavaScript的逻辑运算符(与、或)
2016/12/20 Javascript
Node.js中如何合并两个复杂对象详解
2016/12/31 Javascript
js 去掉字符串前后空格实现代码集合
2017/03/25 Javascript
bootstrap suggest下拉框使用详解
2017/04/10 Javascript
JavaScript运动框架 多物体任意值运动(三)
2017/05/17 Javascript
js使用原型对象(prototype)需要注意的地方
2017/08/28 Javascript
JavaScript 2018 中即将迎来的新功能
2018/09/21 Javascript
JS原生带缩略图的图片切换效果
2018/10/10 Javascript
JavaScript中的ES6 Proxy的具体使用
2019/06/16 Javascript
详解Python中的循环语句的用法
2015/04/09 Python
Python中对数组集进行按行打乱shuffle的方法
2018/11/08 Python
Python最小二乘法矩阵
2019/01/02 Python
python实现AES加密和解密
2019/03/27 Python
python实现将字符串中的数字提取出来然后求和
2020/04/02 Python
Django bulk_create()、update()与数据库事务的效率对比分析
2020/05/15 Python
Python3安装模块报错Microsoft Visual C++ 14.0 is required的解决方法
2020/07/28 Python
创立科技Java面试题
2015/11/29 面试题
电子商务专业求职信
2014/03/08 职场文书
商场消防安全责任书
2014/07/29 职场文书
小学生推普周国旗下讲话稿
2014/09/21 职场文书
教师个人事迹材料
2014/12/17 职场文书
个人收入证明范本
2015/06/12 职场文书
青年教师听课心得体会
2016/01/15 职场文书
合作意向书范本
2019/04/17 职场文书
如何写一份成功的商业计划书
2019/06/25 职场文书
图文详解matlab原始处理图像几何变换
2021/07/09 Python
springboot+zookeeper实现分布式锁
2022/03/21 Java/Android