在 邮件报表 之类的开发任务中,需要生成 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] 取出第一行,即第一个 <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)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- lol全球总决赛lck一号种子是谁 S14全球总决赛lck一号种子队伍
- BradMehldau-ApresFaure(2024)[24-96]FLAC
- IlCannone-FrancescaDegoPlaysPaganinisViolin(2021)[24-96]FLAC
- Tchaikovsky,Babajanian-PianoTrios-Gluzman,Moser,Sudbin[FLAC+CUE]
- 费玉清.1987-费玉清十周年旧曲情怀4CD【东尼】【WAV+CUE】
- 群星.2024-春花焰电视剧影视原声带【TME】【FLAC分轨】
- 方力申.2008-我的最爱新曲+精丫金牌大风】【WAV+CUE】
- 群星 《2024好听新歌35》十倍音质 U盘音乐 [WAV分轨][1.1G]
- 群星《烧透你的耳朵1》DXD金佰利 [低速原抓WAV+CUE][1.2G]
- 莫文蔚《超级金曲精选2CD》SONY [WAV+CUE][1.6G]
- 【RR】加尼克奥尔森GarrickOhlsso《贝多芬钢琴协奏曲全集》原声母带WAV
- 彭芳《纯色角1》[WAV+CUE]
- 李蔓《山顶的月亮—李蔓动态情歌》
- 梁咏琪.1999-新鲜【EEI】【WAV+CUE】
- 张琍敏.1979-悲之秋【海山】【FLAC分轨】