无法使用 pandas.read_excel 访问 .xlsx 文件中的数据
Posted
技术标签:
【中文标题】无法使用 pandas.read_excel 访问 .xlsx 文件中的数据【英文标题】:Can't access data in .xlsx file using pandas.read_excel 【发布时间】:2021-08-06 16:17:14 【问题描述】:我正在尝试访问用户可以使用 pandas.read_excel
和 io.BytesIO
提供的 .xlsx 文件中的数据。如果我尝试像这样解析数据:
def parse_contents(contents, filename):
content_type, content_string = contents.split(',')
decoded = base64.b64decode(content_string)
if 'csv' in filename:
# Assume that the user uploaded a CSV file
return pd.read_csv(
io.StringIO(decoded.decode('utf-8')))
elif 'xls' in filename:
# Assume that the user uploaded an excel file
return pd.read_excel(io.BytesIO(decoded))
函数parse_contents
返回
Unnamed: 0 Unnamed: 1
0 NaN NaN
1 NaN Bitte aktivieren Sie Macros um fortzufahren
2 NaN NaN
3 NaN NaN
4 NaN Please activate Macros to proceed
虽然我认为 xlsx 文件不包含任何宏。有趣的是,对于不同的文件,解析似乎可以找到,我得到了文件中的所有数据。
我需要做什么才能从 Excel 文件中完全删除宏函数?
编辑:
如果我像这样直接在pd.read_excel
中使用filename
,问题仍然存在:
def parse_contents(contents, filename):
if 'csv' in filename:
# Assume that the user uploaded a CSV file
return pd.read_csv(filename)
elif 'xls' in filename:
# Assume that the user uploaded an excel file
return pd.read_excel(filename)
【问题讨论】:
是否将文件名传递给 read_excel 和 read_csv 由于某种原因失败?为什么需要字节 IO? 好问题!看起来它没有任何区别,我不记得为什么我实施得如此奇怪。但是,当我直接在文件名上使用read_excel
时,我仍然遇到同样的问题。
@Axel 这是学校作业吗?
【参考方案1】:
我解决了这个问题。该消息实际上非常具有误导性。我只需要指定要读取的 Excel 工作表即可。
【讨论】:
以上是关于无法使用 pandas.read_excel 访问 .xlsx 文件中的数据的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 Pandas read_excel() 为 xlsx 文件下载完整行 [重复]
Python:Pandas read_excel 无法打开 .xls 文件,不支持 xlrd
pandas.read_excel参数“sheet_name”无法正常工作,,将sheet_name改写成sheetname