用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函数返回值实例分析
Jun 08 Python
Python实现SVN的目录周期性备份实例
Jul 17 Python
利用Python实现命令行版的火车票查看器
Aug 05 Python
Python实现的简单dns查询功能示例
May 24 Python
Python+OpenCV人脸检测原理及示例详解
Oct 19 Python
Python3.5装饰器原理及应用实例详解
Apr 30 Python
python实现堆排序的实例讲解
Feb 21 Python
用python介绍4种常用的单链表翻转的方法小结
Feb 24 Python
python编写一个会算账的脚本的示例代码
Jun 02 Python
Python3.8.2安装包及安装教程图文详解(附安装包)
Nov 28 Python
python glom模块的使用简介
Apr 13 Python
python脚本框架webpy模板控制结构
Nov 20 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
PHP4实际应用经验篇(4)
2006/10/09 PHP
比较全的PHP 会话(session 时间设定)使用入门代码
2008/06/05 PHP
php屏蔽错误及提示的方法
2020/05/10 PHP
利用jQuery的$.event.fix函数统一浏览器event事件处理
2009/12/21 Javascript
jQuery UI-Draggable 参数集合
2010/01/10 Javascript
读jQuery之十四 (触发事件核心方法)
2011/08/23 Javascript
重写javascript中window.confirm的行为
2012/10/21 Javascript
jquery获取tr中控件值并操作tr实现思路
2013/03/27 Javascript
实现网页页面跳转的几种方法(meta标签、js实现、php实现)
2014/05/20 Javascript
超级好用的jQuery圆角插件 Corner速成
2014/08/31 Javascript
JavaScript使用yield模拟多线程的方法
2015/03/19 Javascript
JS动态创建元素的两种方法
2016/04/20 Javascript
网页前端登录js按Enter回车键实现登陆的两种方法
2016/05/10 Javascript
ionic实现可滑动的tab选项卡切换效果
2020/04/15 Javascript
js实现做通讯录的索引滑动显示效果和滑动显示锚点效果
2017/02/18 Javascript
jquery实现左右滑动式轮播图
2017/03/02 Javascript
Express+Nodejs 下的登录拦截实现代码
2017/07/01 NodeJs
JavaScript数组特性与实践应用深入详解
2018/12/30 Javascript
jQuery实现的移动端图片缩放功能组件示例
2020/05/01 jQuery
用Python给文本创立向量空间模型的教程
2015/04/23 Python
Python中datetime常用时间处理方法
2015/06/15 Python
python下实现二叉堆以及堆排序的示例
2017/09/29 Python
人机交互程序 python实现人机对话
2017/11/14 Python
Django添加favicon.ico图标的示例代码
2018/08/07 Python
python简单贪吃蛇开发
2019/01/28 Python
Python基础教程之if判断,while循环,循环嵌套
2019/04/25 Python
windows10下安装TensorFlow Object Detection API的步骤
2019/06/13 Python
对python中的控制条件、循环和跳出详解
2019/06/24 Python
Django中celery执行任务结果的保存方法
2019/07/12 Python
python随机生成库faker库api实例详解
2019/11/28 Python
python3.7调试的实例方法
2020/07/21 Python
HTML5所有标签汇总及标签意义解释
2015/03/12 HTML / CSS
世界上最大的餐具公司:Oneida
2016/12/17 全球购物
优秀教师事迹简介
2014/02/02 职场文书
公司委托书范本
2014/04/04 职场文书
学前教育专业求职信
2014/09/02 职场文书