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

Creating new worksheets to existing workbook using datetime as worksheet name

我有两个功能运行一个接一个。在每个函数的末尾,我 运行 第三个函数将结果写入 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, status, dt_string)

def write_xls(workbook, status, dt_string):
    worksheet = workbook.add_worksheet(dt_string)
    ...

if __name__ == '__main__':
    workbook = xlsxwriter.Workbook('test.xlsx')
    login_fail(workbook)
    login_pass(workbook)
    workbook.close()