2017-03-09 5 views
1

xlsxwriterを使用して.xlsxに10枚のワークシートを保存するスクリプトがあります。 私はワークシートを閉じるしようとすると、私はエラーを取得:xlsxwriterがworkbook.close()の前にエラーをキャッチ

"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) 

のですか?

答えて

0

How can I catch the error while writing every line and not when I close the workbook?

つまり、できません。このエラーは、非ASCIIまたはUTF-8エンコードされたデータをターゲットファイルに書き出すときに発生し、ファイルが閉じられるまで発生しません。

このエラーを回避したい場合は、データを復号してwrite()またはwrite_row()に転送するだけです。

関連する問題