在 邮件报表 之类的开发任务中,需要生成 HTML 表格。

使用 Python 生成 HTML 表格基本没啥难度, for 循环遍历一遍数据并输出标签即可。 如果需要实现合并单元格,或者按需调整表格样式,就比较麻烦了。

这时,可以试试本文的主角 —— html-table 包,借助它可生成各种样式的 HTML 表格。 接下来,以一个简单的例子演示 html-table 的常用用法:

开始之前,须通过 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] 取出第一行,即第一个

标签; table0 取出第一个单元格,对应 名称 ; table0.attr 则是其标签 的属性。 该单元格合并下方一个单元格,需要将标签属性 rowspan 设置为 2 。

接着,加入数据,方法与表头类似,总共有 3 行:

# 数据行

table.append_data_rows((

('荔枝', 11, 1, 10),

('芒果', 9, -1, -10),

('香蕉', 6, 1, 20),

))

至此,数据准备完毕,可以着手调整样式。先设置表格标题样式:

# 标题样式

table.caption.set_style({

'font-size': '15px',

})

设置

# 表格样式,即

table.set_style({

'border-collapse': 'collapse',

'word-break': 'keep-all',

'white-space': 'nowrap',

'font-size': '14px',

})

以上 CSS 样式设置在

接着,设置每个单元格的样式,主要是规定边框样式:

# 统一设置所有单元格样式,

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 将样式设置到表头两个

标签上; set_header_cell_style 则将样式设置到每个 标签上。 应该尽量将颜色等样式设置到 标签上,而不是 标签上,以精简生成的 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 技术文章,请查看:Python语言小册

订阅更新,获取更多学习资料,请关注我们的 微信公众号 :

如何用python生成表格_用 Python 生成 HTML 表格相关推荐

  1. python集群_使用Python集群文档

    python集群 Natural Language Processing has made huge advancements in the last years. Currently, variou ...

  2. python 概率分布模型_使用python的概率模型进行公司估值

    python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...

  3. python 时间序列预测_使用Python进行动手时间序列预测

    python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...

  4. 如何用python编程制作出表格_使用Python轻松制作漂亮的表格

    原标题:使用Python轻松制作漂亮的表格 转自:https://www.linuxmi.com Python太有用而且很方便 图表可以用matplotlib轻松制作,数值计算只要有numpy就行. ...

  5. python 词云_利用Python生成词云

    利用Python生成词云 一.第三方库的安装与介绍 1.1  Python第三方库jieba(中文分词) 1.介绍 "结巴"中文分词:做最好的 Python 中文分词组件. 2.特 ...

  6. beautifulsoup爬取网页中的表格_用 Python 爬取网页

    来自公众号:优达学城Udacity 作者:Kerry Parker 编译:欧剃 作为数据科学家的第一个任务,就是做网页爬取.那时候,我对使用代码从网站上获取数据这项技术完全一无所知,它偏偏又是最有逻辑 ...

  7. python导入股票_利用Python将股票代码表导入表格

    做交易必须做好交易记录,这样方便回顾和总结.对于大部分人来说,Excel是大部分人做电子记录的最佳工具. 这几天在翻看<走进我的交易室>这本书,按照书上参考自己弄了一个表格. 每次输入代码 ...

  8. python 提取pdf表格_用Python提取pdf文件中的表格数据

    本文作者:杨慧琳 本文编辑:周聪聪 技术总编:张学人有问题,不要怕!访问 http://www.wuhanstring.com/uploads/5_aboutus/爬虫俱乐部-用户问题登记表.docx ...

  9. python 网页编程_通过Python编程检索网页

    python 网页编程 The internet and the World Wide Web (WWW), is probably the most prominent source of info ...

最新文章

  1. 百度程序员妻子质疑老公不忠!每天很晚回家!周五下班不回家,说领导带他喝酒!结婚一年就出轨?...
  2. #100天计划# 2013年10月14日
  3. Linux内存映射mmap原理分析
  4. 数据库-优化-子查询优化
  5. 017-通过govendor管理依赖包
  6. 配置DNS服务器的需要修改的配置文件为,dns服务器配置教程
  7. CentOS 安装JDK跟TOMCAT
  8. 2018年广东工业大学文远知行杯新生程序设计竞赛 1007 活在无尽梦境的后续 β...
  9. LVDS之一_理解SerDes
  10. 【剑指 offer】(十)—— 二进制形式 1 的个数
  11. linux查看java堆栈信息_Java运行状态分析2:获取线程堆栈信息
  12. 页面上拖动图片进行排序
  13. 漏洞扫描工具MySQL_打造一款自动扫描全网漏洞的扫描器
  14. NXLog采集windows日志配置conf文件
  15. jrtplib库移植到android上
  16. pandas分析NBA2017-2018赛季球员球队数据
  17. vue2 动态添加响应式数据
  18. DirectVobSub(VsFilter)的基本原理和实现实现
  19. 163邮箱登陆入口展示,企业邮箱电脑版登陆入口
  20. mysql 默认my.cnf_在mysql中更改默认的my.cnf路径

热门文章

  1. 让改变输入法回车键的图标
  2. MySQL索引分析和优化(转)
  3. 关于ajax 1.0的一个问题?
  4. NSArray 与 NSMutableArray 的排序
  5. wordpress 拾遗
  6. Linux深入理解Socket异常
  7. MySQL 5.1.24rc + innodb plugin尝鲜
  8. 如何解决python3.5.2安装scrapy的无法查找到vsvarall的问题
  9. 《微信小程序开发入门精要》——导读
  10. [bug]超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。...