簡體   English   中英

嘗試通過openpyxl解析.xlsx時出現“ UnicodeEncodeError:'charmap'編解碼器無法編碼字符”

[英]“UnicodeEncodeError: 'charmap' codec can't encode characters” when trying to parse .xlsx by openpyxl

- 更新 -

我認為此控制台日志解決了該問題,但是仍不清楚如何解決此問題:

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

有什么建議么?

我正在運行Python 2.7和openpyxl 2.2.5。

openpyxl返回unicode字符串(XML本身以UTF-8編碼),因此您無需對其進行解碼 (從編碼到unicode的解碼),而是以您選擇的編碼對其進行編碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM