pandas读取excel报错valueerror: value does not match pattern ^[$]?([a-za-z]{1,3})[$]?(\d+)-爱代码爱编程
问题描述
使用python pandas读取多个表格文件,读取代码:
for file in files:
print(file)
df_data = pd.read_excel(project_path + file)
pandas读取excel报错
ValueError: Value does not match pattern ^[$]?([A-Za-z]{1,3})[$]?(\d+)
原因分析:
打开报表发现没问题,输出定位问题文件,发现是其中某个文件里的数值是计算公式得出来的数值,应该是pandas暂时不支持读取公式。
解决方案:
改用能读取公式的插件读取,个人用xlwings,附上正常代码:
for file in files:
print(file)
try:
df_data = pd.read_excel(project_path + file)
except:
# 读取公式值
app = xw.App(visible=False, add_book=False)
app.display_alerts = False
app.screen_updating = False
wb = app.books.open(project_path + file)
ws = wb.sheets['Sheet1']
data = ws.range('A:Z').value
# 选取第一行作为索引
data_index = data.pop(0)
df_data = pd.DataFrame(data, columns=data_index)
wb.close()
app.quit()