30/09/2018, 20:42

Bị lỗi khi print giá trị của 01 cell trong file Excel 2010 bằng Python

Mình bị lỗi khi print giá trị của 01 cell trong file Excel 2010 bằng Python.
Ở đây mình sử dụng openpyxl là library để xử lý file excel. Đã mở đc file, lấy được sheet name và bây giờ muốn lấy giá trị của 1 cell (đầu vào cho trước) và modify đó.
Nhưng khi print giá trị cell thì bị lỗi do type(cell) là unicode. Bạn nào đã dùng qua lib này thì hướng dẫn mình với ?

from openpyxl import load_workbook
import warnings

warnings.filterwarnings(“ignore”)
wb = load_workbook(“E:VS Code - PythonTmpCR_template.xlsx”)
print type(wb)
print wb.get_sheet_names()
sheet = wb.get_sheet_by_name(“Sheet1”)
print type(sheet)
print sheet
print sheet.title

print type(sheet[‘B6’].value)
print sheet[‘B6’].value.decode(‘unicode’)

Output lỗi :

<class ‘openpyxl.workbook.workbook.Workbook’>
[u’KBTD’, u’Nhap du lieu’]
class ‘openpyxl.worksheet.worksheet.Worksheet’
Worksheet “Sheet1”
Sheet
<type ‘unicode’>
Traceback (most recent call last):
File “e:VS Code - PythonTmp est.2.py”, line 19, in
print sheet[‘B6’].value
UnicodeEncodeError: ‘ascii’ codec can’t encode character u’xe3’ in position 3: ordinal not in range(128)

Edited : Bổ sung thêm cell B6 dùng chuỗi Unicode

Jack Vo viết 22:52 ngày 30/09/2018

Sáng nay mình run lại thì nó chạy OK, chả hiểu luôn.

htl@PyMI.vn viết 22:42 ngày 30/09/2018

Lỗi hiển thị tiếng việt thôi, sáng nay chắc ô bạn đọc nó không có ký tự tiếng việt nên không lỗi

Mình chạy 1 script python trên Windows bằng 2 cách: trong CMD hoặc Build bằng sublime text 3 (cài package Anaconda) thì bị lỗi: Traceback (most recent call last): File "\\server\www\youtubedl-python\youtube-dl.py", line 28, in <module> print(entry) File "C:\Python34\lib\encodings\cp1252.py", line 19, in encode return codecs.charmap_encode(input,self.errors,encoding_table)[0] UnicodeEncodeError: 'charmap' codec can't encode characters in position 83-84: character maps to <undefine…
Jack Vo viết 22:50 ngày 30/09/2018

Cám ơn bạn nhiều, mình đã xử đc. Chuyển qua decode thì OK. Nhưng có một thắc mắc là nếu đầu dòng code Python mình để :

-- coding: utf-8 --

thì tất cả các ký tự đặc biệt đều bị encode sang uft-8, mình ko muốn như thế thì phải làm sao ?

Bài liên quan
0