首页 > 解决方案 > 使用日期时间作为工作表名称为现有工作簿创建新工作表

问题描述

我有两个函数一个接一个地运行。在每个函数结束时,我运行第三个函数,它将结果写入 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()

标签: pythonxlsxwriter

解决方案


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()

推荐阅读