用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数据库操作常用功能使用详解(创建表/插入数据/获取数据)
Dec 06 Python
python操作ssh实现服务器日志下载的方法
Jun 03 Python
Python验证企业工商注册码
Oct 25 Python
Python原始字符串与Unicode字符串操作符用法实例分析
Jul 22 Python
python切片及sys.argv[]用法详解
May 25 Python
Python+selenium实现自动循环扔QQ邮箱漂流瓶
May 29 Python
Python根据欧拉角求旋转矩阵的实例
Jan 28 Python
python3实现网页版raspberry pi(树莓派)小车控制
Feb 12 Python
Python实现ATM系统
Feb 17 Python
python在地图上画比例的实例详解
Nov 13 Python
appium+python自动化配置(adk、jdk、node.js)
Nov 17 Python
使用Django的JsonResponse返回数据的实现
Jan 15 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实现登陆验证码(类似条行码状)
2006/10/09 PHP
PHP实时显示输出
2008/10/02 PHP
基于Zend的Captcha机制的应用
2013/05/02 PHP
PHP在线调试执行的实现方法(附demo源码)
2016/04/28 PHP
PHP socket 模拟POST 请求实例代码
2016/07/18 PHP
php实现图片压缩处理
2020/09/09 PHP
javascript EXCEL 操作类代码
2009/07/30 Javascript
JavaScript DOM学习第四章 getElementByTagNames
2010/02/19 Javascript
推荐40款强大的 jQuery 导航插件和教程(上篇)
2012/09/14 Javascript
js Dialog 实践分享
2012/10/22 Javascript
js获取url参数代码实例分享(JS操作URL)
2013/12/13 Javascript
解决JQeury显示内容没有边距内容紧挨着浏览器边线
2013/12/20 Javascript
H5用户注册表单页 注册模态框!
2016/09/17 Javascript
JS实现图文并茂的tab选项卡效果示例【附demo源码下载】
2016/09/21 Javascript
JS图片轮播与索引变色功能实例详解
2017/07/06 Javascript
总结JavaScript在IE9之前版本中内存泄露问题
2018/04/28 Javascript
基于vue,vue-router, vuex及addRoutes进行权限控制问题
2018/05/02 Javascript
微信小程序局部刷新触发整页刷新效果的实现代码
2018/11/21 Javascript
原生js实现Flappy Bird小游戏
2018/12/24 Javascript
原生js实现针对Dom节点的CRUD操作示例
2019/08/26 Javascript
转换layUI的数据表格中的日期格式方法
2019/09/19 Javascript
vuex实现像调用模板方法一样调用Mutations方法
2019/11/06 Javascript
python查看矩阵的行列号以及维数方式
2020/05/22 Python
查找适用于matplotlib的中文字体名称与实际文件名对应关系的方法
2021/01/05 Python
HTML5中语义化 b 和 i 标签
2008/10/17 HTML / CSS
Omio美国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/08 全球购物
元旦晚会邀请函
2014/01/27 职场文书
房地产资料员岗位职责
2014/07/02 职场文书
超市周年庆活动方案
2014/08/16 职场文书
我爱幼儿园演讲稿
2014/09/11 职场文书
公司慰问信范文
2015/03/23 职场文书
队列队形口号
2015/12/25 职场文书
html form表单基础入门案例讲解
2021/07/15 HTML / CSS
微信小程序结合ThinkPHP5授权登陆后获取手机号
2021/11/23 PHP
关于@OnetoMany关系映射的排序问题,使用注解@OrderBy
2021/12/06 Java/Android
vue配置型表格基于el-table拓展之table-plus组件
2022/04/12 Vue.js