python怎么读取excel文件内容?xlrd库使用教程

 更新时间:2026年11月12日 09:21:45   作者:IT.cat  
还在为python读取excel报错烦恼吗?本文详细讲解xlrd库的常见问题:新版不支持xlsx格式的解决方法、五种单元格类型(ctype)的含义,以及如何判断读取的数字是否为浮点数,通过实际案例,手把手教你用python高效处理excel数据

一、写代码前需要注意事项

首先我们需要注意:

python xlrd库的新版本2.0.1版本移除了对.xlsx格式的支持,只支持.xls格式。

报错信息如下:

File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/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

解决方法:

将xlrd版本回退到1.2.0版本,使用旧版本支持.xlsx格式。

pip3 uninstall xlrd
pip3 install xlrd=1.2.0

然后我们就可以开始愉快的写代码了

二、基本语法

导入模块

import xlrd

打开指定的excel文件,返回一个data对象

data = xlrd.open_workbook(file)                     #打开excel表,返回data对象

通过data对象可以得到各个sheet对象(一个excel文件可以有多个sheet,每个sheet就是一张表格)

Sheet1 = data.sheet_by_index(0)                     #通过索引顺序获取
Sheet1 = data.sheet_by_name(u‘sheet1')            #通过名称获取
Sheet1 = data.sheets()[0]                           #通过索引顺序获取
num =data.nsheets                                   #返回sheet的数目
list = data.sheets()                                #返回所有sheet对象的列表
list = data.sheet_names()                           #返回所有sheet对象名字的列表

通过sheet对象可以获取各个单元格,每个单元格是一个cell对象

name = sheet1.name                  #返回sheet1的名称
nrows =sheet1.nrows                 #返回sheet1的行数
ncols = sheet1.ncols                #返回sheet1的列数
sheet1.cell_type(x,y)               #返回cell的对象类型
sheet1.cell(x,y).ctype              #返回cell的对象类型
# 即date的ctype=3,这时需要使用xlrd的xldate_as_tuple来处理为date格式
#先判断表格的ctype=3时xldate才能开始操作。

python读取excel中单元格的内容返回的有5种类型

ctype : 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error。

一般情况下读取Excel中数字会自动转换为浮点数,若想判断读取为浮点数可以使用如下方法:

ctype == 2 and cell % 1 == 0.0  # ctype为2且为浮点
sheet1.cell_value(x,y)              #返回cell的值
sheet1.cell(x,y).value              #返回cell的值
sheet1.row(x)                       #获取指定行,返回cell对象的列表
sheet1.row_values(x)                #获取指定行,返回列表
sheet1.col(x)                       #获取指定列,返回cell对象的列表
sheet1.col_values(x)                #获取指定列,返回列表

三、实践案例

这有一张表,我们要取F列

import xlrd
excel=xlrd.open_workbook(r'C:\Users\siyu.guan\Desktop\删除节目单20230119.xlsx')
sheet=excel.sheet_by_index(0)
contenct = sheet.col_values(5)
print(type(contenct))
b = 0
for a in range(67):
    id = []
    for i in range(b,b+1000):
        contenct[i] = str(contenct[i])
        if 'jet' in contenct[i] or 'JC' in contenct[i] or 'JSB' in contenct[i]:
            #print(contenct[i]+",",end='')
            id.append(contenct[i])
    id = str(id)
    id = id.replace('[','').replace('\'','').replace(']','')
    print(id)
    with open(f'movieid/test{a}.txt','w') as file:
       file.write(id)
       file.close()
    b = b+1000

大概就是这样

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 通过python实现弹窗广告拦截过程详解

    通过python实现弹窗广告拦截过程详解

    这篇文章主要介绍了通过python实现弹窗广告拦截过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • Python基本数据类型和打印的操作指南

    Python基本数据类型和打印的操作指南

    Python是一种简洁易读的编程语言,拥有丰富的内置数据类型,掌握基本数据类型和打印输出是学习Python的第一步,也是编程的基础技能,本文小编为大家详细说说
    2026-02-02
  • flask-script模块的具体使用

    flask-script模块的具体使用

    本文主要介绍了flask-script模块的具体使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • python Canny边缘检测算法的实现

    python Canny边缘检测算法的实现

    这篇文章主要介绍了python Canny边缘检测算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Pyqt5中2种弹簧布局的实现

    Pyqt5中2种弹簧布局的实现

    本文介绍使用PyQt5中的水平和垂直弹簧来控制控件位置及布局外观,通过具体代码实例展示了利用QSpacerItem来实现控件的定位,感兴趣的可以了解一下
    2025-09-09
  • Python编程之变量赋值操作实例分析

    Python编程之变量赋值操作实例分析

    这篇文章主要介绍了Python编程之变量赋值操作,结合实例形式分析了Python赋值、位移、多元赋值操作符等相关操作使用技巧,需要的朋友可以参考下
    2017-07-07
  • Pygame实战之迷宫游戏的实现

    Pygame实战之迷宫游戏的实现

    玩迷宫游戏长大的我们,欣慰地看到,下一代仍热爱着这个经典游戏。本文将通过Python中的Pygame库制作这一经典的游戏,需要的可以参考一下
    2022-02-02
  • python找出完数的方法

    python找出完数的方法

    今天小编就为大家分享一篇python找出完数的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • 提升Python代码质量巧妙整理包引入顺序

    提升Python代码质量巧妙整理包引入顺序

    在Python编程中,优化导入包的顺序可以提高代码的可读性、可维护性和性能,一个良好的导入顺序不仅使代码更易于理解,还可以帮助减少潜在的循环依赖和提高导入速度,本文将介绍如何快速、有效地优化Python导入包的顺序,并提供丰富的示例代码以帮助更好地理解
    2024-01-01
  • Pandas时间序列基础详解(转换,索引,切片)

    Pandas时间序列基础详解(转换,索引,切片)

    今天小编就为大家分享一篇Pandas时间序列基础详解(转换,索引,切片),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02

最新评论