当试图通过openpyxlparsing.xlsx时,“UnicodeEncodeError:”charmap'编解码器不能编码字符“

更新

我认为这个控制台日志指出的问题,但是它仍然不清楚如何解决它:

>>> workbook = openpyxl.load_workbook('data.xlsx') >>> worksheet = workbook.active >>> worksheet['A2'].value u'\u041c\u0435\u0448\u043e\u043a \u0434\u0435\u043d\u0435\u0433' >>> print worksheet['A2'].value Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Python27\lib\encodings\cp437.py", line 12, in encode return codecs.charmap_encode(input,errors,encoding_map) UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-4: character maps to <undefined> 

结束更新

我试图用openpyxl打印一些.xlsx单元格的值:

 import openpyxl workbook = openpyxl.load_workbook(filename='puzzles.xlsx') worksheet = workbook.active for row in worksheet.iter_rows('A2:K5'): print row[0].value 

这会导致以下错误:

 Traceback (most recent call last): File "xls_import.py", line 8, in <module> print row[0].value File "C:\Python27\lib\encodings\cp437.py", line 12, in encode return codecs.charmap_encode(input,errors,encoding_map) UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-4: character maps to <undefined> 

据我所知,XLSX编码为UTF-8,但是:

 print row[0].value.decode('utf-8') 

也没有帮助:

 Traceback (most recent call last): File "xls_import.py", line 8, in <module> print row[0].value.decode('utf-8') File "C:\Python27\lib\encodings\utf_8.py", line 16, in decode return codecs.utf_8_decode(input, errors, True) UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128) 

有什么build议么?

我正在运行Python 2.7和openpyxl 2.2.5。

openpyxl返回unicodestring(XML本身是用UTF-8编码的),所以你不需要解码它们(解码从一个编码到一个unicode),但是将它们编码为你select的编码。