Pandas读取启用R1C1引用样式的Excel文件时报错的解决咨询
嗨,这个问题我之前碰到过好几个朋友问,正好可以给你几个实用的解决思路,完美适配你每天自动读取的需求:
先唠唠报错的根源
你遇到的invalid literal for int() with base 10: 'E'错误,本质是Pandas默认的读取引擎(比如xlrd、openpyxl)在处理R1C1格式文件时,把列标识的逻辑搞混了——它会误以为单元格里的内容(比如'E')是R1C1的列数字标识,强行要把它转成整数,自然就触发报错了。
三个解决方法任你挑
方法一:用openpyxl引擎+
data_only=True(最轻便)
如果你只需要读取数据,不需要修改原文件,直接用openpyxl作为引擎,加上data_only=True参数就行。这个参数会让引擎跳过R1C1的格式解析,直接读取单元格的实际内容:import pandas as pd df = pd.read_excel("你的每日文件.xlsx", engine="openpyxl", data_only=True)不需要额外装太多库,只要确保你已经装了openpyxl(
pip install openpyxl)就OK。方法二:用pywin32自动修改Excel设置(Windows专属)
这个方法完全模拟你手动打开文件关闭R1C1的操作,适合需要保留原文件格式的场景。用pywin32后台操作Excel,修改后再保存,之后Pandas就能正常读取了:import win32com.client as win32 import pandas as pd # 后台启动Excel,不显示窗口 excel = win32.gencache.EnsureDispatch('Excel.Application') excel.Visible = False wb = excel.Workbooks.Open(r"你文件的绝对路径.xlsx") # 关闭R1C1引用样式 wb.UseR1C1 = False wb.Save() wb.Close() excel.Quit() # 现在读取就没问题了 df = pd.read_excel("你的每日文件.xlsx")记得先装pywin32:
pip install pywin32。方法三:用xlwings跨平台处理(Mac/Windows都能用)
如果你需要在Mac上也运行脚本,xlwings是个很好的选择,它的逻辑和pywin32类似,但兼容性更强:import xlwings as xw import pandas as pd with xw.App(visible=False) as app: wb = xw.Book("你的每日文件.xlsx") wb.api.UseR1C1 = False wb.save() wb.close() df = pd.read_excel("你的每日文件.xlsx")安装xlwings:
pip install xlwings,Mac上要确保你有正版Excel能正常运行哦。
小提醒
如果只是读取数据,优先选方法一,简单高效;如果有修改原文件格式的需求,再考虑方法二或三。
内容来源于stack exchange

