用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 20 Python
python 默认参数问题的陷阱
Feb 29 Python
Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
Nov 16 Python
numpy.transpose对三维数组的转置方法
Apr 17 Python
python通过Windows下远程控制Linux系统
Jun 20 Python
对python中的乘法dot和对应分量相乘multiply详解
Nov 14 Python
Django如何开发简单的查询接口详解
May 17 Python
python分数表示方式和写法
Jun 26 Python
django 实现将本地图片存入数据库,并能显示在web上的示例
Aug 07 Python
python使用numpy实现直方图反向投影示例
Jan 17 Python
django admin 添加自定义链接方式
Mar 11 Python
解决Python Matplotlib绘图数据点位置错乱问题
May 16 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
PHP中Date()时间日期函数的使用方法小结
2011/04/20 PHP
php 备份数据库代码(生成word,excel,json,xml,sql)
2013/06/23 PHP
PHP中批量生成静态html(命令行下运行PHP)
2014/04/19 PHP
php使用fopen创建utf8编码文件的方法
2014/10/31 PHP
php 多继承的几种常见实现方法示例
2019/11/18 PHP
IE和Firefox在JavaScript应用中的兼容性探讨
2008/04/01 Javascript
jquery中post方法用法实例
2014/10/21 Javascript
js动态切换图片的方法
2015/01/20 Javascript
PHP 数组current和next用法分享
2015/03/05 Javascript
第九篇Bootstrap导航菜单创建步骤详解
2016/06/21 Javascript
Bootstrap表单控件学习使用
2017/03/07 Javascript
微信小程序中做用户登录与登录态维护的实现详解
2017/05/17 Javascript
JS基于正则表达式实现的密码强度验证功能示例
2017/09/21 Javascript
JS实现table表格固定表头且表头随横向滚动而滚动
2017/10/26 Javascript
Vue表单demo v-model双向绑定问题
2018/06/29 Javascript
vue模仿网易云音乐的单页面应用
2019/04/24 Javascript
vue使用prop可以渲染但是打印台报错的解决方式
2019/11/13 Javascript
[02:33]2018DOTA2亚洲邀请赛赛前采访——LGD
2018/04/04 DOTA
python双向链表实现实例代码
2013/11/21 Python
Python中使用Tkinter模块创建GUI程序实例
2015/01/14 Python
python关于矩阵重复赋值覆盖问题的解决方法
2019/07/19 Python
Django模型修改及数据迁移实现解析
2019/08/01 Python
tensor和numpy的互相转换的实现示例
2019/08/02 Python
python禁用键鼠与提权代码实例
2019/08/16 Python
Python从文件中读取指定的行以及在文件指定位置写入
2019/09/06 Python
python3 实现调用串口功能
2019/12/26 Python
Tensorflow中的降维函数tf.reduce_*使用总结
2020/04/20 Python
python集合能干吗
2020/07/19 Python
python性能测试工具locust的使用
2020/12/28 Python
路由表示做什么用的?在linux环境中怎么来配置一条默认路由?
2013/06/07 面试题
大学社团活动总结
2014/04/26 职场文书
年度优秀员工获奖感言
2014/08/15 职场文书
励志演讲稿800字
2014/08/21 职场文书
2014年便民服务中心工作总结
2014/12/20 职场文书
给老婆的道歉信
2015/01/20 职场文书
2019年第四季度财务部门工作计划
2019/11/02 职场文书