读取xlsx文件错误:xlrd.biffh.XLRDError: Excel xlsx file; not supported
Posted Erick T
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了读取xlsx文件错误:xlrd.biffh.XLRDError: Excel xlsx file; not supported相关的知识,希望对你有一定的参考价值。
利用Python库xlrd中的xlrd.open_workbook()函数读取自定义xlsx表格文件时出错如下:
Traceback (most recent call last):
File "C:/Users/llll/PycharmProjects/pythonProject1/RandomForestRegression.py", line 96, in <module>
x_train , y_train , x_test , y_test = load_data(2,60,1,9,0,r'C:\\Users\\llll\\Desktop\\特征表.xlsx')
File "C:/Users/llll/PycharmProjects/pythonProject1/RandomForestRegression.py", line 14, in load_data
workbook = xlrd.open_workbook(str(FilePath)) #excel路径
File "C:\\Users\\llll\\PycharmProjects\\pythonProject1\\venv\\lib\\site-packages\\xlrd\\__init__.py", line 170, in open_workbook
raise XLRDError(FILE_FORMAT_DESCRIPTIONS[file_format]+'; not supported')
xlrd.biffh.XLRDError: Excel xlsx file; not supported
Process finished with exit code 1
经过查资料总结后得到如下解法:
(1)检查第三方库xlrd的版本:
我这里的版本为xlrd2.0.1最新版本,问题就出在这里,需要卸载最新版本,安装旧版本,卸载安装过程如下。
PyCharm查看版本、添加与移除第三方库的方法:
●File-Settings
●Project-Python Interpreter
●移除操作:选中需要删除的包并点减号
●添加操作:点击加号
●搜索框中搜索:
●找到并点击需要安装的包,Install Package:
按照上述步骤卸载xlrd后再安装xlrd2后,错误解决。
(2)别忘了修改import名称与调用的包名称
读取 .xlsx 并访问单元格值,但不是通过它们的位置
【中文标题】读取 .xlsx 并访问单元格值,但不是通过它们的位置【英文标题】:Reading a .xlsx and accessing cell values but not by their position 【发布时间】:2019-03-15 11:03:37 【问题描述】:这是我的第一个问题,如果我有一些解释错误,请提前道歉。
我正在使用 python 2.7 进行编码。 我写了一个 .xlsx (Excel) 文件(它可能是一个 .xls,此时我真的不需要宏 + VBA)。 Excel 文件如下所示:
这些值与列名和行名相关联。例如,我有一个名为“Curve 1”的列和一个名为“Number of extremum”的行。所以在那个单元格中,如果curve1有1个极值,我写“1”。 我想取这个值以便在 python 脚本中操作它。 我知道我可以将 xlrd 模块 与 open workbook 一起使用,并将第 1 行的值(“极值数”)放在一个列表中,然后只取第一个(对应于“曲线 1”列,因此对应于我想要的值“1”),但这不是我想要的。
相反,我想通过仅向 python 脚本提供字符串“Curve 1”和“极值数”来访问“1”单元格值,python 将在两者相遇时访问单元格并取它的值:“1”。可能吗 ?
我想这样做是因为 Excel 文件会及时更改,并且可以移动单元格。因此,如果我尝试通过它的“位置编号”(如第 1 行,第 1 列)访问单元格值,如果在此位置添加一列或一行,我会遇到问题。如果 xlsx 文件中有一些编辑,我不想再次编辑 python 脚本。
非常感谢。
【问题讨论】:
【参考方案1】:Pandas 是一个流行的第三方库,用于读取/写入数据集。您可以使用 pd.DataFrame.at
通过行和列标签进行有效的标量访问:
import pandas as pd
# read file
df = pd.read_excel('file.xlsx')
# extract value
val = df.at['N of extremum', 'Curve 1']
【讨论】:
谢谢!如果我们有 .xls、.xlsm 或 .csv ,该脚本会有所不同吗?如果它在 python 3 上,该脚本会相同吗? 您应该查看Pandas I/O Tools 以了解本机支持的格式。 非常感谢,这正是我所需要的。【参考方案2】:使用 Pandas 非常容易。要获得你想要的单元格,你可以使用loc
,它允许你指定你想要的行和列。
import pandas
df = pandas.read_excel('test.xlsx')
df.loc['N of extremum', 'Curve 1']
【讨论】:
以上是关于读取xlsx文件错误:xlrd.biffh.XLRDError: Excel xlsx file; not supported的主要内容,如果未能解决你的问题,请参考以下文章
如何将 xlsx 或 xls 文件读取为 spark 数据框