13 workbook.close()

优质
小牛编辑
113浏览
2023-12-01

close() 关闭workbook工作簿并将内容写入到XLSX文件中。

  • 抛出:
    • FileCreateError – 如果在写入过程中出现文件或权限的错误,则抛出;
    • DuplicateTableName – 如果添加了重复sheet工作表名称,则抛出;
    • EmptyChartSeries – 如果添加的图表没有数据序列,则抛出;
    • UndefinedImageSize – 如果一个图像没有包含宽高数据,则抛出;
    • UnsupportedImageFormat – 如果图像的类型不支持,则抛出;
    • FileSizeError – 如果文件的压缩容量过大,需要使用zip64,则抛出;

这个workbook工作簿的close()方法将把所有数据写入到XLSX文件中并关闭它。

workbook.close()

这是关闭和写入XlsxWriter文件必须调用的方法,除非你使用的是with管理器。

Workbook对象支持在with上下文管理器中工作。在这种情况下,它不需要显式地调用close()方法:

with xlsxwriter.Workbook('hello_world.xlsx') as workbook:
    worksheet = workbook.add_worksheet()
    worksheet.write('A1', 'Hello world')

在退出with语句块时,workbook工作簿将会自动关闭。

调用close()方法最常见的异常就是FileCreateError,它通常是因为权限不足导致的。在Windows中,如果要创建的文件已经打开,也会发生这种异常。我们可以在try块中捕获这个异常,并提示用户关闭它:

while True:
    try:
        workbook.close()
    except xlsxwriter.exceptions.FileCreateError as e:
        # For Python 3 use input() instead of raw_input().
        decision = raw_input("Exception caught in workbook.close(): %s\n"
                             "Please close the file if it is open in Excel.\n"
                             "Try to write file again? [Y/n]: " % e)
        if decision != 'n':
            continue

    break