【发布时间】: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 这是学校作业吗?