用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批量修改word文件名的方法示例
Oct 17 Python
python 列表降维的实例讲解
Jun 28 Python
Python爬虫爬取新浪微博内容示例【基于代理IP】
Aug 03 Python
基于wxPython的GUI实现输入对话框(1)
Feb 27 Python
详解django+django-celery+celery的整合实战
Mar 19 Python
Python2与Python3的区别实例分析
Apr 11 Python
Opencv+Python实现图像运动模糊和高斯模糊的示例
Apr 11 Python
python django生成迁移文件的实例
Aug 31 Python
matlab中imadjust函数的作用及应用举例
Feb 27 Python
解决django框架model中外键不落实到数据库问题
May 20 Python
详解Python调用系统命令的六种方法
Jan 28 Python
如何用python反转图片,视频
Apr 24 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
codeigniter中测试通过的分页类示例
2014/04/17 PHP
ThinkPHP多语言支持与多模板支持概述
2014/08/22 PHP
在textarea中显示html页面的javascript代码
2007/04/20 Javascript
Javascript 模式实例 观察者模式
2009/10/24 Javascript
jquery实现的随机多彩tag标签随机颜色和字号大小效果
2014/03/27 Javascript
移动设备web开发首选框架:zeptojs介绍
2015/01/29 Javascript
confirm确认对话框的实现方法总结
2016/06/17 Javascript
JS实现输入框提示文字点击时消失效果
2016/07/19 Javascript
AngularJS教程之环境设置
2016/08/16 Javascript
JavaScript生成验证码并实现验证功能
2016/09/24 Javascript
Web前端开发之水印、图片验证码
2016/11/27 Javascript
vue组件之Alert的实现代码
2017/10/17 Javascript
使用express搭建一个简单的查询服务器的方法
2018/02/09 Javascript
详解react关于事件绑定this的四种方式
2018/03/09 Javascript
Vue props用法详解(小结)
2018/07/03 Javascript
html2canvas属性和使用方法以及如何使用html2canvas将HTML内容写入Canvas生成图片
2020/01/12 Javascript
深入解析微信小程序开发中遇到的几个小问题
2020/07/11 Javascript
微信小程序选择图片控件
2021/01/19 Javascript
Python算法之栈(stack)的实现
2014/08/18 Python
python中关于for循环的碎碎念
2017/06/30 Python
python3.6.3+opencv3.3.0实现动态人脸捕获
2018/05/25 Python
flask中过滤器的使用详解
2018/08/01 Python
Python实现拷贝/删除文件夹的方法详解
2018/08/29 Python
[原创]Python入门教程4. 元组基本操作
2018/10/31 Python
对python的输出和输出格式详解
2018/12/08 Python
python面试题小结附答案实例代码
2019/04/11 Python
利用Python实现kNN算法的代码
2019/08/16 Python
英国皇家邮政海外旗舰店:Royal Mail
2018/02/21 全球购物
俄罗斯最大的灯具网站:Fandeco
2020/03/14 全球购物
药学专业毕业生求职信
2013/10/20 职场文书
秋季红领巾广播稿
2014/01/27 职场文书
师恩难忘教学反思
2014/04/27 职场文书
2014年信贷员工作总结
2014/11/18 职场文书
软件项目经理岗位职责
2015/04/01 职场文书
首次购房证明
2015/06/19 职场文书
关于JavaScript 中 if包含逗号表达式
2021/11/27 Javascript