Python中使用UTF-8编码通过pd.read_excel读取Excel文件是否可行?
pd.read_excel读取UTF-8编码Excel文件的实现方案
首先明确:pd.read_excel() 没有和pd.read_csv()一致的公开encoding参数,是因为标准 .xlsx 格式本质为ZIP压缩包,内部存储的XML内容默认采用UTF-8编码,常规场景下无需额外配置即可正常识别多语言内容。如果遇到乱码,大多为旧版.xls格式、非标准导出Excel、文件存储编码异常的情况,可通过以下方案解决:
方案1:针对旧版
.xls格式指定引擎编码
读取.xls格式文件时可使用xlrd引擎,直接传入encoding参数指定编码:# 需先安装支持xls格式的xlrd版本:pip install xlrd==1.2.0 df = pd.read_excel("你的文件.xls", engine="xlrd", encoding="utf-8")方案2:通过字节流读取适配非标准编码文件
如果是xlsx格式出现乱码,可先以二进制模式读取文件,再通过IO流传入pd.read_excel()解析:import pandas as pd from io import BytesIO with open("你的文件.xlsx", "rb") as f: df = pd.read_excel(BytesIO(f.read()), engine="openpyxl")方案3:通过openpyxl手动指定编码加载
部分自定义导出的非标准xlsx文件,可以先通过openpyxl指定编码加载工作簿,再转换为DataFrame:from openpyxl import load_workbook import pandas as pd wb = load_workbook("你的文件.xlsx", encoding="utf-8") # 读取指定工作表可替换为 wb['工作表名'] ws = wb.active df = pd.DataFrame(ws.values)
备注:如果以上方案仍存在乱码,可先确认源文件的实际编码,少数场景下文件实际编码为GBK、UTF-8 BOM等,将上述参数中的
utf-8替换为对应编码即可。
内容的提问来源于stack exchange,提问作者Bar Kadosh
相关产品推荐
相关产品推荐

