HtmlTable在Python中的使用详解
一、HtmlTable的安装
HtmlTable是用来在Python中自动生成表单的一个库,我们可以通过以下方式来进行安装。在某些情况下,我们也可以通过这种方式来展示我们的报告。
pip install html_table #安装方式
pip list #验证方式
二、详细代码
这里我已经封装好方法了,大家可以直接调方法就行,这个库学起来也比较简单,在表单里面我做了链接的处理。如果大家对样式有需求,也可以自己去加对应的样式、颜色等等。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 2023/1/8 13:22
# Author : AldRichxm
# File : ManageHTable.py
from HTMLTable import HTMLTable
class HtmlTableApi(object):
def __init__(self,title:str,header_data:tuple,rows_data:tuple):
"""
:param title: 表单的标题
:param header_data: 表头
:param rows_data: 表的数据
"""
self.title = title
self.table = HTMLTable(caption=title,rows=())
self.table.append_header_rows(rows=header_data)
self.table.append_data_rows(rows=rows_data)
def setStyle(self,align ="center",cursor = "pointer",color='#999990'):
"""
可以自己添加想要的样式
:param align: 居中、右、左
:param cursor: 鼠标光标样式
:param color: 标题颜色
:return:
"""
caption_style = {
'text-align': align,
'cursor': cursor,
"color" : color
}
self.table.set_style(style=caption_style)
def setBorderStyle(self):
"""
设置单元格边框、单元格样式
:return:
"""
border_style = {
'border-color': '#000',
'border-width': '1px',
'border-style': 'solid',
'border-collapse': 'collapse',
# 实现表格居中
'margin': 'auto',
}
# 外边框
self.table.set_style(border_style)
# 单元格边框
self.table.set_cell_style(border_style)
def setCellStyle(self):
"""
设置单元格内容样式
:return:
"""
cell_style = {
'text-align': 'center',
'padding': '4px',
'background-color': '#ffffff',
'font-size': '0.95em',
}
self.table.set_cell_style(cell_style)
def setTableHeaderStyle(self):
"""
设置表头内容样式
:return:
"""
header_cell_style = {
'text-align': 'center',
'padding': '4px',
'background-color': '#aae1fe',
'color': '#FFFFFF',
'font-size': '0.95em',
}
self.table.set_header_cell_style(header_cell_style)
def setValueStyle(self):
"""
判断值,并设置颜色
:return:
"""
for row in self.table.iter_data_rows():
age = row[3].value #每行第四列的值
if float(age) < 20:
row[3].set_style({
'background-color': '#ffd001', #设置样式
})
def setAllStyle(self):
self.setCellStyle()
self.setTableHeaderStyle()
self.setStyle(cursor="hand")
self.setBorderStyle()
self.setValueStyle()
def createHtml(self):
"""
如果含link,则处理成为可以点击的链接
:return:
"""
html = self.table.to_html().replace("<", "<").replace(">", ">").replace(""", '"')
with open(self.title+".html","w",encoding="gbk") as f:
f.write(html)
if __name__ == '__main__':
html = HtmlTableApi(title="测试报告",
rows_data=((1,"张三","男",12,
"<a href=https://www.cnblogs.com/ypppt/p/12922824.html target = '_blank '>点击查看详情</a>"),
(2,"李红","女",21,
"<a href=https://blog.csdn.net/qq_38312411/article/details/127278756 target = '_blank '>点击查看详情</a>")),
header_data=(("编号","姓名","性别","年龄","link"),))
html.setAllStyle()
html.createHtml()
2.1 运行结果
这里我准备了两条数据,大家也可以获取其他接口数据展示出来,原理一样,最后组合成一个元组嵌套的元组。运行代码得到下面的表单。
三、参考链接
1、CSS大全
2、参考HTMLTable链接