我的代码:
import openpyxl
file_location = "test.xlsx"
wb = openpyxl.load_workbook(file_location, use_iterators=True)
sheet = wb.get_sheet_by_name("Blad1")
count = 1
rows_count = sheet.max_row
while count < rows_count:
print sheet["C" + str(count)].value + " " + str(sheet["D" + str(count)].value) + " " + str(sheet["E" + str(count)].value) + " " + sheet["F" + str(count)].value
count = count + 1
我正在尝试读取.xlsx文件。一切都打印得很好,直到我到达一个有“Ä”字符的单元格以及数字,我得到了这个错误。
print sheet["C" + str(count)].value + " " + str(sheet["D" + str(count)].value) + " " + str(sheet["E" + str(count)].value) + " " + sheet["F" + str(count)].value
UnicodeEncodeError: 'ascii' codec can't encode character u'\xc4' in position 11: ordinal not in range(128)
我想我知道问题是什么,但我不知道如何解决它。我正在使用Python 2.7
答案 0 :(得分:0)
由于事实“Ä”而导致的此ID不由str()
字符集
ASCII
尝试将其转换为encode()
个字符,因此会抛出错误而不是utf-8
并且{Ä“由a=u"Ä"
a
u'\xc4'
str(a)
---------------------------------------------------------------------------
UnicodeEncodeError Traceback (most recent call last)
<ipython-input-368-202e444820fd> in <module>()
----> 1 str(a)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xc4' in position 0: ordinal not in range(128)
a.encode("utf-8")
'\xc3\x84'
print a.encode("utf-8")
处理,因此请使用该方法
{{1}}
答案 1 :(得分:0)
问题在于你将unicode字符串传递给print语句。
尝试这样的事情:
for row in ws.iter_rows(): # let openpyxl worry about rows
print " ".join(cell.value.encode("utf-8") for cell in row[3:7])
答案 2 :(得分:0)
我的坏。我刚刚删除了str(),一切正常!感谢所有试图提供帮助的人!
答案 3 :(得分:-1)
尝试使用str.encode()而不是str()。
myString.encode(encoding='UTF-8',errors='strict')