pandas输出excel文件添加表头标题,样式装饰器
以下装饰器将输出带有样式的excel文件。
import os
import pandas as pd
from xlsxwriter.utility import xl_range
def decoratorToExcel(excel_name: str = "test", excel_title: str = "test", excel_dir: str = None):
"""
输出文件装饰器,作用于类方法
:param excel_dir: 输出的文件夹
:param excel_title: 文件名
:param excel_name: 文件表头
:return:
"""
def midFunc(cls_func):
def inner(self, *args, **kwargs):
data: pd.DataFrame = cls_func(self, *args, **kwargs)
try:
if excel_dir:
os.makedirs(excel_dir)
except BaseException:
pass
writer = pd.ExcelWriter(
%s%s.xlsx % (
excel_dir + "/" if excel_dir else "", excel_name,), datetime_format=yyyy/mm/dd)
data.to_excel(
writer,
engine=xlsxwriter,
sheet_name=sheet,
startrow=2,
header=False,
float_format="%.2f")
workbook = writer.book
worksheet = writer.sheets[sheet]
worksheet.set_row(0, 20)
worksheet.set_row(1, 30)
header_format = workbook.add_format({
bold: True,
font_color: black,
text_wrap: True,
align: center,
fg_color: #6BA81E,
border: 1})
rl = data.columns.tolist()
rl.insert(0, 序号)
cell_range = xl_range(0, 0, 0, len(rl) - 1)
merge_format = workbook.add_format(
{align: center, bold: True, fg_color: #009688, font_color: "#000000"})
worksheet.merge_range(cell_range, excel_title, merge_format)
for col_num, value in enumerate(rl):
worksheet.write(1, col_num, value, header_format)
writer.save()
return
return inner
return midFunc
class Test:
@decoratorToExcel(excel_name="测试表格", excel_title="测试sheet")
def setExcelData(self) -> pd.DataFrame:
"""
生成excel数据
:return: DataFrame
"""
data: pd.DataFrame = pd.DataFrame({"name": "张三 李四 王五".split(), "age": "12 13 15".split()})
return data
if __name__ == __main__:
Test().setExcelData()
下一篇:
JeeSite4.0.1+实现左树右表
