python - 使用日期时间作为工作表名称为现有工作簿创建新工作表
问题描述
我有两个函数一个接一个地运行。在每个函数结束时,我运行第三个函数,它将结果写入 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()
推荐阅读
- java - 如何通过从 Java 中的 String 数组或 ArrayList 中获取值来创建所需的 JSON 结构?
- c# - 在 Visual Studio 2017 中增加 WPF dataGrid 的 DataGridColumnHeader 的 FontSize 和 FontWeight
- c# - 在多语言的每个操作中设置语言
- c# - 向 C# 中变量内的字符串添加双引号时遇到问题?
- google-chrome - 验证码不显示自定义标头安全策略 referrer-policy: none
- apache - 如何为 http 和 https 使用相同的端口
- rust - 我如何要求对泛型类型的引用实现特征?
- angular - 在 IIS 中托管 Angular 4 应用程序后 HTTP 错误 500.19 内部服务器错误
- elasticsearch - ES 结果中的主数据映射
- command-line - 命令行 - 在桌面上创建 exe 文件的快捷方式