用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中的__init__和__new__
Mar 12 Python
Python中SOAP项目的介绍及其在web开发中的应用
Apr 14 Python
Python3中的2to3转换工具使用示例
Jun 12 Python
Python常用爬虫代码总结方便查询
Feb 25 Python
关于PyTorch 自动求导机制详解
Aug 18 Python
PyTorch中topk函数的用法详解
Jan 02 Python
python3.7通过thrift操作hbase的示例代码
Jan 14 Python
使用 Python 读取电子表格中的数据实例详解
Apr 17 Python
使用matlab 判断两个矩阵是否相等的实例
May 11 Python
pygame用blit()实现动画效果的示例代码
May 28 Python
Python中itertools库的四个函数介绍
Apr 06 Python
在 Python 中利用 Pool 进行多线程
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
PHP HTML JavaScript MySQL代码如何互相传值的方法分享
2012/09/30 PHP
CentOS 6.2使用yum安装LAMP以及phpMyadmin详解
2013/06/17 PHP
php中rename函数用法分析
2014/11/15 PHP
微信公众平台接口开发入门示例
2014/12/24 PHP
PHP实现获取FLV文件的时间
2015/02/10 PHP
PHP+Mysql+jQuery文件下载次数统计实例讲解
2015/10/10 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
jQuery学习3:操作元素属性和特性
2010/02/07 Javascript
jquery()函数的三种语法介绍
2013/10/09 Javascript
JS正则表达式大全(整理详细且实用)
2013/11/14 Javascript
js动态添加删除,后台取数据(示例代码)
2013/11/25 Javascript
在firefox和Chrome下关闭浏览器窗口无效的解决方法
2014/01/16 Javascript
jQuery动态修改超链接地址的方法
2015/02/13 Javascript
基于jQuery倾斜打开侧边栏菜单特效代码
2015/09/15 Javascript
JS随机打乱数组的方法小结
2016/06/22 Javascript
JS实现显示带倒影的图片横排居中放大展示特效实例【测试可用】
2016/08/23 Javascript
详解用node编写自己的cli工具
2017/05/23 Javascript
javascript帧动画(实例讲解)
2017/09/02 Javascript
详解react-router 4.0 下服务器如何配合BrowserRouter
2017/12/29 Javascript
解决JSON.stringify()自动将中文转译成unicode的问题
2018/01/05 Javascript
vue基础之模板和过滤器用法实例分析
2019/03/12 Javascript
基于JavaScript获取base64图片大小
2019/10/18 Javascript
Vue-cli打包后部署到子目录下的路径问题说明
2020/09/02 Javascript
详解python3中socket套接字的编码问题解决
2017/07/01 Python
Python实现随机选择元素功能
2017/09/14 Python
Python构建网页爬虫原理分析
2017/12/19 Python
Python socket实现简单聊天室
2018/04/01 Python
Python开发最牛逼的IDE——pycharm
2018/08/01 Python
scrapy-redis的安装部署步骤讲解
2019/02/27 Python
python如何实现代码检查
2019/06/28 Python
Mytheresa中国官网:德国时尚奢侈品商城
2017/08/04 全球购物
The Athlete’s Foot新西兰:新西兰最大的运动鞋零售商
2019/12/23 全球购物
什么是SCM(软件配置管理)
2014/08/16 面试题
教师竞聘演讲稿
2014/05/16 职场文书
学校运动会广播稿100条
2014/09/14 职场文书
办公室主任四风问题对照检查材料思想汇报
2014/09/28 职场文书