简体   繁体   English

Python xlsxwriter不会在退出代码-1上创建工作簿

[英]Python xlsxwriter does not create workbook on exit code -1

I am writing a python code to implement some logic and record it in excel sheet. 我正在编写python代码以实现一些逻辑并将其记录在excel工作表中。 xlsxwriter works fine when program terminates properly but if it is terminated through some logical error in the code or through any exceptions or interrupts the excel workbook is not created. 当程序正确终止但由于代码中的某些逻辑错误或由于任何异常或中断而终止时,xlsxwriter可以正常工作,但不会创建excel工作簿。

I tried even xlwt and the behaviour is same. 我什至尝试xlwt并且行为是相同的。 Here's my code: 这是我的代码:

import xlsxwriter
import time
try:
    workbook = xlsxwriter.Workbook('hello.xlsx')
    worksheet = workbook.add_worksheet()

    worksheet.write('A1', 'write something')
    time.sleep(5)
    # some logic implementation
    worksheet.write("B1","write something")
finally:
    workbook.close()

Starting with version 0.7.3 xlsxwriter added support for Python's with context manager, so it is no longer necessary to have an explicit workbook.close() statement. 从版本0.7.3开始,xlsxwriter with上下文管理器添加了对Python的支持,因此不再需要具有显式的workbook.close()语句。

You could try wrapping your code as follows: 您可以尝试如下包装代码:

with xlsxwriter.Workbook('hello.xlsx') as workbook:
    try:
        worksheet = workbook.add_worksheet()
        worksheet.write('A1', 'write something A1')
        print 1/0           # Generate an exception
        worksheet.write('A2', 'write something A2')
    except:
        worksheet.write('A3', 'write something A3')

The resulting output xlsx file should contain A1 and A3 . 生成的输出xlsx文件应包含A1A3 Having just a finally clause will not catch the exception. 仅具有finally子句不会捕获该异常。

You can determine which version you are running by doing the following: 您可以通过执行以下操作确定正在运行的版本:

import xlsxwriter
print xlsxwriter.__version__

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM