问题描述
我有两个功能,一个接一个地运行。在每个函数的最后,我运行第三个函数,将结果以当前日期和时间作为工作表名称写入Excel。目前,我的代码使用第二个函数中的值覆盖了当前工作表,而不是创建一个新的工作表。我该如何解决?
Now = datetime.Now()
dt_string = Now.strftime("%Y-%m-%d_%H_%M_%s")
def login_pass():
write_xls(status,dt_string)
def login_fail():
write_xls(status,dt_string)
def write_xls(status,dt_string):
workbook = xlsxwriter.Workbook('test.xlsx')
worksheet = workbook.add_worksheet(dt_string)
worksheet.write('A1','Test',header)
worksheet.write('B1','Status',header)
worksheet.write('A2','Login')
worksheet.write('B2',status)
workbook.close()
if __name__ == '__main__':
login_fail()
login_pass()
解决方法
您的write_xls
函数(从每个辅助函数调用),每次创建新的Excel文件。
您需要创建一个“全局” Excel文件,并将其传递给您的函数以添加工作表。像这样:
now = datetime.now()
dt_string = now.strftime("%Y-%m-%d_%H_%M_%S")
def login_pass(workbook):
write_xls(workbook,status,dt_string)
def login_fail(workbook):
write_xls(workbook,dt_string)
def write_xls(workbook,dt_string):
worksheet = workbook.add_worksheet(dt_string)
...
if __name__ == '__main__':
workbook = xlsxwriter.Workbook('test.xlsx')
login_fail(workbook)
login_pass(workbook)
workbook.close()