2016-12-19 1 views
2

나는 VBA 매크로를 통해 Excel 파일을 암호화하고 Excel 파일의 모든 시트를 복사하려고하지만 스크립트는 계속 날아갑니다. 내 스 니펫에서 내가 뭘 잘못하고 있니?xlsm을 csv로 변환

import csv 
import xlrd 

workbook = xlrd.open_workbook('P:/NEW.xlsm') 
for sheet in workbook.sheets(): 
    with open('{}.csv'.format(sheet.name), 'wb') as f: 
     writer = csv.writer(f) 
     writer.writerows(sheet.row_values(row) for row in range(sheet.nrows)) 

오류 :

Traceback (most recent call last): 
    File "C:/Users/datainput.py", line 8, in <module> 
    writer.writerows(sheet.row_values(row) for row in range(sheet.nrows)) 
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2013' in position 20: ordinal not in range(128) 
+2

이'NEW의 예를 추가하십시오 함수 .encode ('UTF-8')/디코딩 기능을 사용 당신은 당신의 새 파일에 쓰기 전에와 유니 코드를 제거 볼 수 있었다. xlsm' –

+0

무슨 뜻인지 자세히 설명해 주시겠습니까? 모든 시트의 이름을 알려주시겠습니까? –

답변

0

은 분명히 원본 파일에서 유니 코드를 다루는 문제가있다.

import re 
text_without_unicode = re.sub(r'[^\x00-\x7f]', r'', text_with_unicode) 

또는