2017-03-09 3 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()으로 전달하기 전에 데이터를 디코딩 (decode)하십시오.