用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 12 Python
python实现按任意键继续执行程序
Dec 30 Python
简单谈谈Python中的元祖(Tuple)和字典(Dict)
Apr 21 Python
python获取txt文件词向量过程详解
Jul 05 Python
浅谈keras的深度模型训练过程及结果记录方式
Jan 24 Python
Python tkinter 下拉日历控件代码
Mar 04 Python
解决Python 异常TypeError: cannot concatenate 'str' and 'int' objects
Apr 08 Python
python opencv把一张图片嵌入(叠加)到另一张图片上的实现代码
Jun 11 Python
python用tkinter实现一个简易能进行随机点名的界面
Sep 27 Python
详解Python模块化编程与装饰器
Jan 16 Python
python - timeit 时间模块
Apr 06 Python
浅谈python中的多态
Jun 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性能优化工具篇Benchmark类调试执行时间
2011/12/06 PHP
PHP合并数组函数array_merge用法分析
2017/02/17 PHP
JavaScript 实现模态对话框 源代码大全
2009/05/02 Javascript
jQuery 美元符冲突的解决方法
2010/03/28 Javascript
JS无法捕获滚动条上的mouse up事件的原因猜想
2012/03/21 Javascript
JavaScript对象创建及继承原理实例解剖
2013/02/28 Javascript
鼠标拖动实现DIV排序示例代码
2013/10/14 Javascript
Javascript call和apply区别及使用方法
2013/11/14 Javascript
js根据日期判断星座的示例代码
2014/01/23 Javascript
Visual Studio中js调试的方法图解
2014/06/30 Javascript
javascript里绝对用的上的字符分割函数总结
2014/07/31 Javascript
javascript数据结构之二叉搜索树实现方法
2015/11/25 Javascript
jQuery实现鼠标经过时高亮,同时其他同级元素变暗的效果
2016/09/18 Javascript
javascript history对象详解
2017/02/09 Javascript
浅谈js中function的参数默认值
2017/02/20 Javascript
webpack学习教程之publicPath路径问题详解
2017/06/17 Javascript
基于LayUI分页和LayUI laypage分页的使用示例
2017/08/02 Javascript
ES6中的迭代器、Generator函数及Generator函数的异步操作方法
2019/05/12 Javascript
在Vue中使用this.$store或者是$route一直报错的解决
2019/11/08 Javascript
如何使用jQuery操作Cookies方法解析
2020/09/08 jQuery
小程序实现密码输入框
2020/11/16 Javascript
Python与Redis的连接教程
2015/04/22 Python
Python学习之用pygal画世界地图实例
2017/12/07 Python
hmac模块生成加入了密钥的消息摘要详解
2018/01/11 Python
Python使用xlwt模块操作Excel的方法详解
2018/03/27 Python
Python Tkinter模块实现时钟功能应用示例
2018/07/23 Python
Python中拆分字符串的操作方法
2019/07/23 Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
2020/02/27 Python
如何查看Django ORM执行的SQL语句的实现
2020/04/20 Python
HTML5 CSS3给网站设计带来出色效果
2009/07/16 HTML / CSS
AmazeUI 点击元素显示全屏的实现
2020/08/25 HTML / CSS
金融管理毕业生求职信
2014/03/03 职场文书
统计专业自荐书
2014/07/06 职场文书
安全标兵事迹材料
2014/08/17 职场文书
党员群众路线教育实践活动剖析材料
2014/10/10 职场文书
七夕情人节问候语
2015/11/11 职场文书