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

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

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

当我将表格写入工作表时,我尝试去捕捉错误,但没有成功。 因此,我的工作表根本没有得到保存,我无法处理该行的exception情况。

这是我的代码 –

 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) 

如何在写入每行时捕获错误,而不是在closures工作簿时?

如何在写入每行时捕获错误,而不是在closures工作簿时?

总之,你不能。 将非ASCII或UTF-8编码的数据写入目标文件时发生此错误,直到文件closures才会发生此错误。

如果您只是想避免这个错误,那么只需在将数据传递给write()write_row()之前解码()您的数据即可。