用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 相关文章推荐
Python3.x和Python2.x的区别介绍
Feb 12 Python
实例讲解Python爬取网页数据
Jul 08 Python
python 根据时间来生成唯一的字符串方法
Jan 14 Python
python 多线程对post请求服务器测试并发的方法
Jun 13 Python
我们为什么要减少Python中循环的使用
Jul 10 Python
对python中基于tcp协议的通信(数据传输)实例讲解
Jul 22 Python
python使用minimax算法实现五子棋
Jul 29 Python
用python实现英文字母和相应序数转换的方法
Sep 18 Python
matplotlib绘制多个子图(subplot)的方法
Dec 03 Python
使用卷积神经网络(CNN)做人脸识别的示例代码
Mar 27 Python
Python3爬虫中Ajax的用法
Jul 10 Python
Python Pandas知识点之缺失值处理详解
May 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
为什么《星际争霸》是测试人工智能的理想战场
2019/12/03 星际争霸
ASP知识讲座四
2006/10/09 PHP
php学习笔记(三)操作符与控制结构
2011/08/06 PHP
PHP实现通过中文字符比率来判断垃圾评论的方法
2014/10/20 PHP
PHP程序员必须清楚的问题汇总
2014/12/18 PHP
PHP 数组遍历foreach语法结构及实例
2016/06/13 PHP
创建一个复制UBB软件信息的链接或按钮的js代码
2008/01/06 Javascript
Mootools 1.2教程 设置和获取样式表属性
2009/09/15 Javascript
javascript继承之为什么要继承
2012/11/10 Javascript
checkbox全选所涉及到的知识点介绍
2013/12/31 Javascript
jquery获取复选框被选中的值
2014/03/22 Javascript
node.js使用require()函数加载模块
2014/11/26 Javascript
js实现网页多级级联菜单代码
2015/08/20 Javascript
jQuery ui实现动感的圆角渐变网站导航菜单效果代码
2015/08/26 Javascript
开启Javascript中apply、call、bind的用法之旅模式
2015/10/28 Javascript
初步使用bootstrap快速创建页面
2016/03/03 Javascript
利用jsonp跨域调用百度js实现搜索框智能提示
2016/08/24 Javascript
Bootstrap CSS组件之面包屑导航(breadcrumb)
2016/12/17 Javascript
canvas绘制一个常用的emoji表情
2017/03/30 Javascript
微信小程序以7天为周期连续签到7天功能效果的示例代码
2020/08/20 Javascript
Python中XlsxWriter模块简介与用法分析
2018/04/24 Python
python 实现在txt指定行追加文本的方法
2018/04/29 Python
python add_argument()用法解析
2020/01/29 Python
python isinstance函数用法详解
2020/02/13 Python
Python SMTP配置参数并发送邮件
2020/06/16 Python
Hoover胡佛官网:美国吸尘器和洗地机品牌
2019/01/09 全球购物
const char*, char const*, char*const的区别是什么
2014/07/09 面试题
Delphi笔试题
2016/11/14 面试题
汽车维修专业毕业生的求职信分享
2013/12/04 职场文书
预备党员自我评价范文
2015/03/04 职场文书
升职自荐信怎么写
2015/03/05 职场文书
巴黎圣母院观后感
2015/06/10 职场文书
Python机器学习三大件之一numpy
2021/05/10 Python
如何用Laravel包含你自己的帮助函数
2021/05/27 PHP
SpringBoot中HttpSessionListener的简单使用方式
2022/03/17 Java/Android
Python查找算法的实现 (线性、二分,分块、插值查找算法)
2022/04/24 Python