Python读取xlsx文件报错:xlrd.biffh.XLRDError: Excel xlsx file;not supported问题解决

不过在回答之前,我先提供一下Python读取xlsx文件报错:xlrd.biffh.XLRDError: Excel xlsx file; not supported问题解决 的背景和原因:

问题背景:

我们使用Python操作xlsx文件时,有时候会遇到一个奇怪的错误——"xlrd.biffh.XLRDError: Excel xlsx file; not supported",这种情况可能会令初学者非常困惑,特别是你的代码可以正常操作xls后缀的Excel文件,但无法处理同样内容的xlsx后缀的文件。那么这个错误到底是怎么回事儿呢?

问题原因:

其实,这个问题的根本原因就在于,xlsx文件格式的改变。在Excel 2007之前,可以使用xls后缀的文件格式进行存储,但是在Excel 2007之后,Microsoft将默认文件格式更改为.xlsx格式。为了避免向后兼容问题,xlrd库不再支持.xlsx文件格式,只支持.xls文件格式。可以使用OpenPyXL库读取.xlsx文件。以上就是该问题的原因所在。

接下来就是该问题的具体解决方案。第一个示例:

示例1:以xlrd库为例

使用xlrd库读取.xlsx文件时,会提示"xlrd.biffh.XLRDError: Excel xlsx file; not supported"错误,这时候我们需要通过OpenPyXL库来优雅地解决这个问题。

首先,我们需要安装OpenPyXL库。你可以通过以下命令在终端中安装它:

pip install openpyxl

然后,我们就可以使用以下代码来读取.xlsx文件:

import openpyxl

wb = openpyxl.load_workbook('example.xlsx') # 实例化
sheet = wb.get_sheet_by_name('Sheet1')  # 选择工作表

for i in range(1, sheet.max_row + 1):  # 遍历行
    for j in range(1, sheet.max_column + 1):  # 遍历列
        print(sheet.cell(row=i, column=j).value)  # 输出单元格的值

以上就是使用OpenPyXL库来读取.xlsx文件的示例代码,我们可以发现,和使用xlrd库进行.xlsx文件读取时代码相比较,使用OpenPyXL库的代码更简洁、优雅。同时,这种方式还支持早期版本的Excel文件,如.xls和.xlsm。

第二个示例:

示例2:使用pandas库

pandas提供了一种非常直接的方式来读取.xlsx文件,能够灵活地处理文件中的数据,以及对数据进行切片和过滤。如果你有大量的数据需要进行操作,那么pandas库就是最佳选择。

我们可以使用以下代码来读取.xlsx文件:

import pandas as pd

df = pd.read_excel('example.xlsx',sheet_name = 'Sheet1') # 读取

print(df) # 输出

以上就是使用pandas库来读取.xlsx文件的示例代码。我们可以看到,pandas底层其实也是使用OpenPyXL库来实现读取,只不过它把底层实现封装起来,提供了更高的代码易用性和可读性。

总结:

通过以上两个示例,我们可以知道,当我们需要使用Python来读取.xlsx文件时,即使你习惯于使用xlrd库也无法避免出现"xlrd.biffh.XLRDError: Excel xlsx file; not supported"的问题。因此我们可以使用OpenPyXL库或者pandas库来解决这个问题。同时,这两种方法都十分简洁、易用,无论从代码可读性还是代码实现难度上都更优秀。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python读取xlsx文件报错:xlrd.biffh.XLRDError: Excel xlsx file;not supported问题解决 - Python技术站

(0)
上一篇 2023年5月13日
下一篇 2023年5月13日

相关文章

  • python 实现单一数字取对数与数列取对数

    下面就是关于Python实现单一数字取对数与数列取对数的完整攻略。 单一数字取对数 如果想要计算一个数字的对数,需要使用Python math模块中的log函数。具体的代码如下所示: import math num = 100 base = 10 result = math.log(num, base) print(result) num:表示数字的值,这里…

    python 2023年6月3日
    00
  • python list使用示例 list中找连续的数字

    Python中查找列表中连续数字的方法 在Python编程中,有时候需要查找一个列表中的连续数字,这时候我们可以使用for循环和if语句或正则表达式来实现。下面将详细介绍Python中查找列表中连续数字的方法,包括语法、参数、返回值以及示例说明。 方法一:使用for循环和if语句 在Python中,我们可以使用for循环和if语句来查找一个列表中的连续数字。…

    python 2023年5月13日
    00
  • 你知道吗实现炫酷可视化只要1行python代码

    下面是详细的攻略: 炫酷可视化是什么? 炫酷可视化是指通过各种图表、动画等方式展示数据或概念,以便更直观地理解和反映数据或概念的模式、趋势、关系等。常见的炫酷可视化包括热力图、地图、3D图、动态图等。 为什么可以用1行Python代码实现? Python语言的可视化库很多,其中比较常用的包括Matplotlib、Seaborn、Plotly、Bokeh等。这…

    python 2023年5月19日
    00
  • 详解Python PIL Image.show()方法

    Python PIL是一个强大的图像处理库,其中包含了许多函数和方法。其中,Image.show()方法是一个很常用的方法,它的作用是用系统默认的图像查看器展示当前图片。 方法介绍 PIL库的Image模块提供了显示图像的方法,在这个模块内,show()方法可以接收一个图像对象,并且用默认的可执行文件查看这个图像。 在使用show()方法之前,我们需要先安装…

    python-answer 2023年3月25日
    00
  • Gradio机器学习模型快速部署工具quickstart前篇

    我来为您讲解“Gradio机器学习模型快速部署工具Quickstart前篇”的攻略。 1. 什么是Gradio Gradio是一种快速部署和分享机器学习模型的工具。Gradio为用户提供了一个简单易用的Web界面,使得部署机器学习模型变得非常容易。用户可以轻松地将训练好的模型封装成一个容易使用的界面,并发布到Web上。 Gradio的主要优点在于它是一个非常…

    python 2023年5月23日
    00
  • 举例详解Java编程中HashMap的初始化以及遍历的方法

    为了更好地帮助大家理解Java编程中HashMap的初始化以及遍历方法,我将分以下几部分对其进行详细的讲解。 一、HashMap的初始化 在Java编程中,我们可以使用HashMap类来实现键值对(key-value)的映射。在初始化HashMap时,我们通常会使用以下两种方法: 1. 使用默认构造函数 HashMap有一个默认构造函数,当我们没有给出初始容…

    python 2023年6月3日
    00
  • 如何使用 Redis 的 HyperLogLog 数据类型?

    以下是详细讲解如何使用 Redis 的 HyperLogLog 数据类型的完整使用攻略。 Redis HyperLogLog 简介 Redis HyperLogLog 是一种基数算法,可以用于估计一个集合中的元素数量。Redis HyperLog 的特点如: Redis HyperLogLog 是一种基数算法,可以用于估计一个集合中的元素数量。 Redis …

    python 2023年5月12日
    00
  • python multiprocessing多进程变量共享与加锁的实现

    下面我来详细讲解一下“python multiprocessing多进程变量共享与加锁的实现”的完整攻略。 简介 Python 的 multiprocessing 模块提供了一种使用多进程并行处理数据的方法,可以显著提高数据处理的速度。不过在多进程编程中,每个进程独立运行,各自维护着自己的内存空间,因此共享变量需要特别处理,否则容易出现多个进程并发修改同一个…

    python 2023年6月6日
    00
合作推广
合作推广
分享本页
返回顶部