Pandas实现自定义Excel格式并导出多个sheet表(pandas怎么导入数据)这都可以

随心笔谈5个月前发布 admin
225 00
🌐 经济型:买域名、轻量云服务器、用途:游戏 网站等 《腾讯云》特点:特价机便宜 适合初学者用 点我优惠购买
🚀 拓展型:买域名、轻量云服务器、用途:游戏 网站等 《阿里云》特点:中档服务器便宜 域名备案事多 点我优惠购买
🛡️ 稳定型:买域名、轻量云服务器、用途:游戏 网站等 《西部数码》 特点:比上两家略贵但是稳定性超好事也少 点我优惠购买

文章摘要

这篇文章介绍了一个名为`class writer()`的Python类,用于将`DataFrame`数据保存为Excel文件并进行美化处理。该类的主要功能包括: 1. **类初始化**:通过`__init__`方法接收`df`(数据框)、`sheet_name`(工作表名称)、`key`(需要上色的字段)和`path`(保存路径)等参数,并将这些参数存储为实例变量。 2. **保存方法**:`save`方法的主要逻辑包括: - 设置默认保存路径,格式为“导出时间(导出时间).xlsx”。 - 创建`pandas.ExcelWriter`实例,用于写入Excel文件。 - 遍历`sheet_name`列表,逐个工作表写入`DataFrame`数据。 - 设置列宽:通过分析数据计算每列的最大字符宽度,并设置为固定宽度。 - 上色和样式配置:定义颜色列表,对需要上色的字段设置背景色、字体加粗、对齐方式等样式。 - 设置冻结行和列,固定某些列的位置。 - 应用格式到工作表并保存文件。 3. **美化功能**:通过计算每列的最大字符宽度,并应用用户自定义的颜色和样式,使Excel文件更加美观。 总结来看,该类实现了将`DataFrame`数据高效保存为美化后的Excel文件的功能。

class writer():
def __init__(self,df,sheet_name,key,path):
self.df=df #dataframe数据(列表)
self.sheet_name=sheet_name #sheet名称(列表)
self.key=key #需要上色字段(列表)
self.path=path #excel保存地址
def save(self):
#设置保存地址,默认桌面
path=”C:/Users/xxx/Desktop/{}{}(导出时间{}).xlsx”.format(pd.datetime.now().strftime(“%y%m%d”),self.path,pd.datetime.now().strftime(“%H时%M分%S秒”))
#创建pandas.ExcelWriter实例
writer=pd.ExcelWriter(path,engine=’xlsxwriter’) #创建pandas.ExcelWriter实例,赋值给writer
for j in range(len(self.sheet_name)): #遍历sheet名称列表
#创建sheet表并写入dataframe数据
self.df[j].to_excel(writer, sheet_name=self.sheet_name[j], index=False #不写入索引index=False
,freeze_panes=(1,2)) #设置固定1、2列(固定列无法左右移动)
workbook=writer.book #工作蒲格式方法
worksheet=writer.sheets[self.sheet_name[j]] #读取sheet表
# 计算每列的合适字符宽度,放到元组中
widths=(self.df[j].astype(str).applymap(lambda x: 40 if len(x)>61 else len(x)+6 if len(x)<8 else len(x)).agg(max).values)
#设置每列宽度大小
[worksheet.set_column(i, i, width) for i, width in enumerate(widths)] #计算的宽度,设置列宽
color=[‘#03A89E’,’#00C78C’,’#FFFFCD’,’#FFC0CB’,’#808A87′,’#FFE384′,’#ED9121′,’#40E0D0′,’#FFFFCD’]*5 #颜色列表
[worksheet.set_column(i,i,widths[i],workbook.add_format({‘fg_color’: color[i-11],
‘valign’: ‘vcenter’,# 垂直对齐方式
‘font_size’: 10, #字体大小
‘border’: 4, #单元格边框宽度
‘align’: ‘left’ # 水平对齐方式
})) for
i,x in enumerate(self.df[j].columns) if self.df[j].columns[i] in self.key[0]]
#设置首行宽度
worksheet.set_row(0,20,workbook.add_format({‘fg_color’:’#40E0D0’#背景颜色
,’bold’: True,#字体加粗
‘valign’: ‘vcenter’,# 垂直对齐方式
‘font_size’: 16, #字体大小
‘border’: 10, #单元格边框宽度
‘align’: ‘left’ # 水平对齐方式
}))
# worksheet.set_column(“A:B”,None,None,{‘hidden’:1}) #A至B列,隐藏
writer.save()
writer.close()
writer1=writer(df=[df],path=’フィロソフィー’,key=[df],sheet_name=[‘sheet表名’])
writer1.save()

© 版权声明

相关文章