使用日期时间作为工作表名称为现有工作簿创建新工作表

问题描述

我有两个功能一个一个地运行。在每个函数的最后,我运行第三个函数,将结果以当前日期和时间作为工作表名称写入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()