用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 相关文章推荐
Windows和Linux下使用Python访问SqlServer的方法介绍
Mar 10 Python
python从网络读取图片并直接进行处理的方法
May 22 Python
Python正则表达式教程之二:捕获篇
Mar 02 Python
Python多线程中阻塞(join)与锁(Lock)使用误区解析
Apr 27 Python
Windows下PyCharm安装图文教程
Aug 27 Python
Python远程视频监控程序的实例代码
May 05 Python
pandas实现to_sql将DataFrame保存到数据库中
Jul 03 Python
Python read函数按字节(字符)读取文件的实现
Jul 03 Python
浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法
Oct 25 Python
PyQt5中多线程模块QThread使用方法的实现
Jan 31 Python
Python+pyftpdlib实现局域网文件互传
Aug 24 Python
Python使用tkinter实现小时钟效果
Feb 22 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+dbfile开发小型留言本
2006/10/09 PHP
360通用php防护代码(使用操作详解)
2013/06/18 PHP
PHP将XML转数组过程详解
2013/11/13 PHP
php获取网站根目录物理路径的几种方法(推荐)
2017/03/04 PHP
仅用[]()+!等符号就足以实现几乎任意Javascript代码
2010/03/01 Javascript
JavaScript初学者需要了解10个小技巧
2010/08/25 Javascript
jquery(live)中File input的change方法只起一次作用的解决办法
2011/10/21 Javascript
关于jQuery中的each方法(jQuery到底干了什么)
2014/03/05 Javascript
JavaScript中的函数的两种定义方式和函数变量赋值
2014/05/12 Javascript
JavaScript Serializer序列化时间处理示例
2014/07/31 Javascript
nodejs通过phantomjs实现下载网页
2015/05/04 NodeJs
JavaScript中setFullYear()方法的使用详解
2015/06/11 Javascript
JavaScript设计模式开发中组合模式的使用教程
2016/05/18 Javascript
javascript用正则表达式过滤空格的实现代码
2016/06/14 Javascript
javascript设计模式之module(模块)模式
2016/08/19 Javascript
jQuery图片前后对比插件beforeAfter用法示例【附demo源码下载】
2016/09/20 Javascript
jstree的简单实例
2016/12/01 Javascript
Vue实现数字输入框中分割手机号码的示例
2017/10/10 Javascript
js获取form表单中name属性的值
2019/02/27 Javascript
JS实现提示效果弹出及延迟隐藏的功能
2019/08/26 Javascript
使用Python的PEAK来适配协议的教程
2015/04/14 Python
python使用matplotlib绘制折线图教程
2017/02/08 Python
详解python中list的使用
2019/03/15 Python
django的分页器Paginator 从django中导入类
2019/07/25 Python
python实现井字棋小游戏
2020/03/04 Python
关于python 跨域处理方式详解
2020/03/28 Python
Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
2020/04/11 Python
小结Python的反射机制
2020/09/28 Python
为娇小女性量身打造:Petite Studio
2018/11/01 全球购物
日本著名化妆品零售网站:Cosme Land
2019/03/01 全球购物
德国购买踏板车网站:Microscooter
2019/10/14 全球购物
幼儿园中班下学期评语
2014/04/18 职场文书
法人授权委托书公证范本
2014/09/14 职场文书
2014教师党员自我评议(5篇)
2014/09/20 职场文书
2014年会计人员工作总结
2014/12/10 职场文书
Python机器学习算法之决策树算法的实现与优缺点
2021/05/13 Python