用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计算圆周长、面积、球体体积并画出圆
Apr 08 Python
Python lambda和Python def区别分析
Nov 30 Python
python+django快速实现文件上传
Oct 24 Python
使用Django和Python创建Json response的方法
Mar 26 Python
对python抓取需要登录网站数据的方法详解
May 21 Python
python中join()方法介绍
Oct 11 Python
python 导入数据及作图的实现
Dec 03 Python
python opencv 检测移动物体并截图保存实例
Mar 10 Python
python进行OpenCV实战之画图(直线、矩形、圆形)
Aug 27 Python
termux中matplotlib无法显示中文问题的解决方法
Jan 11 Python
python文件名批量重命名脚本实例代码
Apr 22 Python
Python字典的基础操作
Nov 01 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代码
2010/08/08 PHP
php与c 实现按行读取文件实例代码
2017/01/03 PHP
ThinkPHP实现分页功能
2017/04/28 PHP
改善用户体验的五款jQuery插件分享
2011/05/22 Javascript
js 字符串转化成数字的代码
2011/06/29 Javascript
javascript中match函数的用法小结
2014/02/08 Javascript
js自动查找select下拉的菜单并选择(示例代码)
2014/02/26 Javascript
Bootstrap 粘页脚效果
2016/03/28 Javascript
AngularJS中$http服务常用的应用及参数
2016/08/22 Javascript
AngularJS中比较两个数组是否相同
2016/08/24 Javascript
详解关于react-redux中的connect用法介绍及原理解析
2017/09/11 Javascript
简易Vue评论框架的实现(父组件的实现)
2018/01/08 Javascript
Angularjs Promise实例详解
2018/03/15 Javascript
H5+C3+JS实现双人对战五子棋游戏(UI篇)
2020/05/28 Javascript
ndm:NPM的桌面GUI应用程序
2018/10/15 Javascript
Vue实现搜索结果高亮显示关键字
2019/05/28 Javascript
jquery简易手风琴插件的封装
2020/10/13 jQuery
[20:57]Ti4主赛事第三天开幕式
2014/07/21 DOTA
wxPython事件驱动实例详解
2014/09/28 Python
python如何通过实例方法名字调用方法
2018/03/21 Python
Django框架实现的简单分页功能示例
2018/12/04 Python
Python Flask框架模板操作实例分析
2019/05/03 Python
新年福利来一波之Python轻松集齐五福(demo)
2020/01/20 Python
python中可以声明变量类型吗
2020/06/18 Python
Python手动或自动协程操作方法解析
2020/06/22 Python
Python 在局部变量域中执行代码
2020/08/07 Python
css3一个简易的 LED 数字时钟实现方法
2020/01/15 HTML / CSS
夏威夷灵感服装及配饰:Reyn Spooner
2018/09/18 全球购物
大学生实习期自我评价范文
2013/10/03 职场文书
汽修专业学生自我鉴定
2013/11/16 职场文书
新员工入职感言
2014/02/01 职场文书
2014年乡镇个人工作总结
2014/12/03 职场文书
无罪辩护词范文
2015/05/21 职场文书
个人催款函范文
2015/06/23 职场文书
邓小平文选读书笔记
2015/06/29 职场文书
PHP对接阿里云虚拟号的实现(号码隐私保护)
2021/04/06 PHP