我会创建一个python类"ExcelFile“来处理在工作簿中添加多个工作表,
函数应该是泛型的,这样团队中的任何一个人都可以很容易地使用它。
我做了开发,一切都很好,我的代码如下:
def addSheet(df,"sheet_name1"):
-- reading template
-- add sheet1
-- replace existing file在我多次调用该函数之后,它取决于我想要添加多少工作表,所以:
addSheet(df1,"sheet_name1")
addSheet(df2,"sheet_name2")
addSheet(df3,"sheet_name3")我想重构我的代码,把它放到一个python类中,并实现一个设计模式,它将帮助我通过调用
xls_file = ExcelFile().useTemplate("template_path").addSheet(df,"sheet_name1").addSheet(df2,"sheet_name2").writeXlsFile("filename")这样做的设计模式的名称是什么?
发布于 2020-06-16 20:19:36
所以在搜索之后:我使用了chain方法
导入熊猫作为pd导入openpyxl
class ExcelFile(object):
template_path = None
file_path = None
book = None
xlwriter = None
def replaceSheet(self, dataframe, sheet_name):
pandas_df = dataframe.toPandas()
self.book = openpyxl.load_workbook(self.template_path)
self.xlwriter = pd.ExcelWriter(self.template_path, engine='openpyxl')
# test if the sheet doesn't exist
sheet_id = self.book.get_sheet_by_name(sheet_name)
self.book.remove(sheet_id)
self.xlwriter.book = self.book
pandas_df.to_excel(self.xlwriter, sheet_name=sheet_name, index=False, header=True)
return self
def useTemplate(self, template_path):
self.template_path = template_path
return self
def writeFile(self, file_path):
self.book.save(file_path)
self.xlwriter.save()
self.xlwriter.close()
return file_pathAnf不是多次调用函数,而是通过以下方式调用:
xls_file = ExcelFile()
xls_file.useTemplate(template_path=templatepath) \
.replaceSheet(dataframe=Sales_df, sheet_name="DB Sales") \
.replaceSheet(dataframe=cost_df, sheet_name="DB COST") \
.replaceSheet(dataframe=b2c_df, sheet_name="DB B2C") \
.writeFile(file_path=local_tmp_file)https://stackoverflow.com/questions/62406605
复制相似问题