我有一个脚本,该脚本将10个工作表保存到.xlsx使用XLSXWriter。当我尝试关闭工作表时,我会发现一个错误:
"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)
在编写每一行而不是关闭工作簿时,我该如何捕获错误?
在编写每一行而不是关闭工作簿时,我该如何捕获错误?
简而言之,您不能。当将非ASCII或UTF-8编码数据编码到目标文件时,此错误是发生错误的,直到文件关闭之前,这才发生。
如果您只想避免此错误,则只需将数据传递给write()
或write_row()
。