无法使用 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_excelio.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

带有超链接的 Pandas read_excel

pandas.read_excel,第一行值

编码参数是不是适用于 pandas.read_excel?