xlsxwriter在workbook.close()之前捕获错误

时间:2017-03-09 15:15:41

标签: python excel xlsxwriter

我有一个脚本,可以使用xlsxwriter将10个工作表保存到.xlsx。 当我尝试关闭工作表时,出现错误:

"UnicodeDecodeError: 'ascii' codec can't decode byte 0xea in position 28: ordinal not in range(128)".

当我将线条写入工作表时,我尝试捕获错误但没有任何成功。因此,我的工作表根本没有保存,我无法处理该行的例外情况。

这是我的代码 -

def xlsx_writer(name, data):
    worksheet1 = workbook.add_worksheet(name)
    line_number = 0
    for line in data:
        try:
            worksheet1.write_row(line_number, 0, line)
        except UnicodeDecodeError:
            line = [x.decode('utf-8') for x in line]
            worksheet1.write_row(line_number, 0, line)

如何在编写每一行时捕获错误,而不是在关闭工作簿时捕获错误?

1 个答案:

答案 0 :(得分:0)

  

如何在编写每一行时捕获错误,而不是在关闭工作簿时捕获错误?

简而言之,你不能。将非ASCII或UTF-8编码数据写入目标文件并且在文件关闭之前不会发生错误。

如果您只是想避免此错误,那么只需解码()您的数据,然后再将其传递给write()write_row()