利用Python第三方库xlrd读取Excel中数据实例代码

目录
  • 1. 安装 xlrd 库
  • 2. 使用 xlrd 库
    • 2.1 打开 Excel 工作表对象
    • 2.2 读取单个单元格数据
    • 2.3 读取多个单元格数据
    • 2.3 读取所有单元格数据
  • 附:行、列操作
  • 3. 总结

1. 安装 xlrd 库

Python 读取 Excel 中的数据主要用到 xlrd 第三方库。xlrd 其实就是两个单词的简化拼接,我们可以把它拆开来看,xl 代表 excel, rd 代表 read, 合并起来就是 xlrd, 意思就是读 excel 的第三方库。

这种命名风格也正是我们推荐使用的,要做到 “顾名思义”,不要使用晦涩难懂,与所实现的功能毫无关联的名称。

OK, 废话不多说了,下面我们就着手安装 xlrd 库,pip 命令如下:

pip install xlrd==1.2.0 -i https://mirrors.aliyun.com/pypi/simple

值得注意的是,我在安装 xlrd 库的时候,指定了 xlrd 的版本,即 xlrd==1.2.0, 这也是在实践中积累的经验哦,因为不指定版本总是会有各种状况,为了确保不出错,大家尽量按照我这样安装吧。否则,出错可别找我哦!

2. 使用 xlrd 库

2.1 打开 Excel 工作表对象

(咳咳,战术咳嗽!) 首先,我们先梳理一下思路,把概念搞清楚。什么概念呢?就是大家知道什么是工作簿,什么是工作表,什么是单元格吗?

平时我们说的 Excel 工作表文件,其实严格来说它是个工作簿。然后打开工作簿,里面有多个 Sheet, 我们把这个称作 ”工作表“。之后,我们的数据是放在单元格里面的。

下面,让我们再用图片的形式展示,一起要分清概念。

工作簿:

工作表:

单元格:

好的,那么使用 xlrd 读取 Excel 表中的数据的时候也应按照:工作簿 -> 工作表 -> 单元格,这样的过程去读取数据的。

那么,打开工作对象的代码如下:

import xlrd

# 打开工作簿
workbook = xlrd.open_workbook(r'C:\Users\Desktop\工作簿1.xlsx')
# 三种方式获取工作表
# worksheet = workbook.sheet_by_index(0)
# worksheet = workbook.sheets()[0]
worksheet = workbook.sheet_by_name('Sheet1')

代码解析:

  1. 首先导入安装的第三方库 xlrd.
  2. 之后,使用 xlrd 库下的方法 open_workbook(), 打开一个工作簿,方法里的参数为工作簿的路径。
  3. 最后,根据拿到的工作簿对象,指定获取的工作表。当然了,获取工作表的方法有三种,分别是根据索引和根据工作表名称获取,索引是从0开始的。只要使用一种方式即可,这里我推荐使用根据工作表名称获取。

2.2 读取单个单元格数据

那么我们在上一小节打开了工作表对象之后,下面就要获取表里的单元格数据了呀!如何获取单元格数据呢?请看下面的代码:

import xlrd

# 打开工作簿
workbook = xlrd.open_workbook(r'C:\Users\Desktop\工作簿1.xlsx')
# 获取工作表
worksheet = workbook.sheet_by_name('Sheet1')
# 获取单元格数据的两种方式
# cell_value = worksheet.cell(0, 0).value
cell_value = worksheet.cell_value(0, 0)
print(cell_value)

代码解析:

获取单元格数据的方法也很简单。这里提供了两种方法,都可以获取单元格数据,大家只要根据自己习惯,掌握一种即可。例如,我这里使用的是 cell_value() 方法,方法里传递的是单元格的索引。单元格的索引是二维的,第一个参数是所在行,第二个参数是所在列。需要注意的是,所有的索引都是从 0 开始计数的。

2.3 读取多个单元格数据

上一小节中,我们使用了 cell_value() 方法获取单个单元格数据,但是这种方式未免效率过于低下了,现在我们想一次性获取整行或者整列的数据,该如何去做呢 ?请看下面的代码:

import xlrd

# 打开工作簿
workbook = xlrd.open_workbook(r'C:\Users\Desktop\工作簿1.xlsx')
# 获取工作表
worksheet = workbook.sheet_by_name('Sheet1')
# 获取第一行所有单元格数据
row_value = workbookt.row(0)
# 获取第一列所有单元格数据
col_value = workbook.col(0)

代码解析:

与 2.2 小节不同的是,我们通过调用方法 row() 和 col() 分别获取某行和某列所有单元格数据,row() 和 col() 内传入的参数为索引,索引从 0 开始计数。例如,row(0) 表示获取第一行所有单元格数据,row(1) 表示获取第二行所有单元格数据。

那么我们运行上面的代码段,运行结果如下所示:

[text:'班级', text:'学号', text:'姓名', text:'成绩']  # row(0) 的结果值
[text:'班级']     # col(0) 的结果值

通过观察运行结果,我们发现运行的结果都是以列表的形式展示的。值得注意的是,列表的数值并不是字典格式,尽管这和 Python 中字典格式完全一样,实际上列表中元素的类型应该是 <class 'xlrd.sheet.Cell'>, 这是 xlrd 中的 cell 对象,即单元格对象。单元格对象有 value 属性,因此我们可以通过遍历列表获得每一个 cell 对象,然后通过 value 属性取出每一个 cell 的值。

改造后的代码如下所示:

import xlrd

# 打开工作簿
workbook = xlrd.open_workbook(r'C:\Users\Desktop\工作簿1.xlsx')
# 获取工作表
worksheet = workbook.sheet_by_name('Sheet1')

for i in worksheet.row(0):
    print(i.value)  # 获取单元格数据
for i in worksheet.col(0):
    print(i.value)  # 获取单元格数据

2.3 读取所有单元格数据

在上一小节中,我们学习了获取多个单元格数据,也就是整行或整列获取数据,这样获取数据的粒度更大,效率自然也更高。那么如果说,我想获取 Sheet 表中所有的数据又该怎么做呢?

要想获取 Sheet 表中所有单元格数据,就得知道 Sheet 表有多少行以及多少列。这样,我们根据行数和列数,才能获取 Sheet 表所有数据啊。xlrd 中 worksheet 对象有两个属性 nrows 和 ncols, 它们分别表示当前的 Sheet 表的行数和列数。

获取所有单元格数据的代码如下所示:

import xlrd

# 打开工作簿
workbook = xlrd.open_workbook(r'C:\Users\Desktop\工作簿1.xlsx')
# 获取工作表
worksheet = workbook.sheet_by_name('Sheet1')
# 根据行获取所有单元格数据
for row in range(worksheet.nrows):
    for i in worksheet.row(row):
        print(i.value)
# 根据列获取单元格数据
for col in range(worksheet.ncols):
    for i in worksheet.col(col):
        print(i.value)

代码解析:

上面的代码中,输出的结果应该都是所有单元格数据,只不过分别从行和列的角度出发获取单元格数据。其实,还可以用 cell_value() 方法结合 nrows 和 ncols 属性获取所有单元格数据,这种方法留给大家自己去尝试吧!

附:行、列操作

获取全行数据、切片、全行类型、行的有效单元格数等

# # 获取整行和整列的值(数组)
k = 2
rows = sheet1_content1.row_values(k); # 获取第3行内容  row_values(rowx=2, start_colx=0, end_colx=None)
cols = sheet1_content1.col_values(k); # 获取第3列内容

###   行操作 对应列操作把 row 换成 col
print(sheet1Name,'第',k+1,'行内容为',rows)
print(sheet1_content1.row_slice(rowx=k))#返回由该行中所有的单元格对象类型及对象组成的列表
print(sheet1_content1.row_types(rowx=k, start_colx=0, end_colx=None))#返回由该行中所有的单元格对象类型及对象组成的列表
print(sheet1_content1.row(rowx=k))#返回由该行中所有的单元格对象类型及对象组成的列表
print(sheet1_content1.row_len(rowx=k)) #返回该行的有效单元格长度
    # # 5. 获取单元格内容(三种方式)
print(sheet1_content1.cell(0, 1).value)
print(sheet1_content1.cell_value(0, 1))
print(sheet1_content1.row(0)[1].value)
# print(sheet1_content1.row(10)[10].value) ## 超出索引长度会报错

3. 总结

通过上面的学习,相信大家对 xlrd 第三方库的安装以及使用第三方库读取 Excel 中的数据的方法有了一定的掌握。学习了读取操作之后,可以通过下一篇博客《使用 Python 第三方库 xlwt 写入数据到 Excel 工作表》学习向 Excel 工作表写入数据。

到此这篇关于利用Python第三方库xlrd读取Excel中数据的文章就介绍到这了,更多相关Python xlrd读取Excel数据内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python读取excel进行遍历/xlrd模块操作

    我就废话不多说了,大家还是直接看代码吧~ #!/usr/bin/env python # -*- coding: utf-8 -*- import csv import xlrd import xlwt def handler_excel(filename=r'/Users/zongyang.yu/horizon/ops_platform/assets/upload/1.xlsl'): # 打开文件 workbook = xlrd.open_workbook(filename) index =

  • Python中使用第三方库xlrd来读取Excel示例

    本篇文章介绍如何使用xlrd来读取Excel表格中的内容,xlrd是第三方库,所以在使用前我们需要安装xlrd.另外我们一般会使用xlwt来写Excel,所以下一篇文章我们会来介绍如何使用xlwt来写Excel.xlrd下载:xlrd 0.8.0 安装xlrd 安装xlrd,只需运行setup即可,另外你也可以直接解压缩到你的project中,也可以直接用 xlrd的API 获取Excel,这里称之为work book 复制代码 代码如下: open_workbook(file_name) 获取

  • 详解python中xlrd包的安装与处理Excel表格

    一.安装xlrd 地址 下载后,使用 pip install .whl 安装即好. 查看帮助: >>> import xlrd >>> help(xlrd) Help on package xlrd: NAME xlrd PACKAGE CONTENTS biffh book compdoc formatting formula info licences sheet timemachine xldate xlsx FUNCTIONS count_records(fil

  • Python使用xlrd模块操作Excel数据导入的方法

    本文实例讲述了Python使用xlrd模块操作Excel数据导入的方法.分享给大家供大家参考.具体分析如下: xlrd是一个基于python的可以读取excel文件的产品.和pyExcelerator相比,xlrd的主要特点在于读的功能比较强大,提供了表单行数.列数.单元格数据类型等pyExcelrator无法提供的详细信息,使得开发人员无须了解表单的具体结构也能对表单中的数据进行正确的分析转换. 但是xlrd仅仅提供了读取excel文件的功能,不能像pyExcelrator那样生成excel文

  • Python第三方库xlrd/xlwt的安装与读写Excel表格

    前言 相信大家都应该有所体会,在平时经常会遇到处理 Excel 表格数据的情况,人工处理起来实在是太麻烦了,我们可以使用 Python 来解决这个问题,我们需要两个 Python 扩展, xlrd 和 xlwt . xlrd和xlwt是Python的第三方库,所以是需要自己安装的,可以在python的官网https://pypi.python.org/pypi下载该模块来安装,也可以通过其他手段,比如easy_install或者pip,下面来看看详细的安装介绍与读写Excel表格的方法吧. 使用

  • python中使用xlrd、xlwt操作excel表格详解

    最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异,而且不太能满足需求,不过经过一番对源码的"研究"(用此一词让我觉得颇有成就感)之后,基本解决了日常所需.主要记录使用过程的常见问题及解决. python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库.可从这里下载https://pypi.python.org/pypi.下面分别记录python

  • Python中使用第三方库xlrd来写入Excel文件示例

    继上一篇文章使用xlrd来读Excel之后,这一篇文章就来介绍下,如何来写Excel,写Excel我们需要使用第三方库xlwt,和xlrd一样,xlrd表示read xls,xlwt表示write xls,同样目前版本只支持97-03版本的Excel.xlwt下载:xlwt 0.7.4 安装xlwt 安装方式一样是python setup.py install就可以了,或者直接解压到你的工程目录中. API介绍 获取一个xls实例 复制代码 代码如下: xls = ExcelWrite.Work

  • python使用xlrd模块读写Excel文件的方法

    本文实例讲述了python使用xlrd模块读写Excel文件的方法.分享给大家供大家参考.具体如下: 一.安装xlrd模块 到python官网下载http://pypi.python.org/pypi/xlrd模块安装,前提是已经安装了python 环境. 二.使用介绍 1.导入模块 复制代码 代码如下: import xlrd 2.打开Excel文件读取数据 复制代码 代码如下: data = xlrd.open_workbook('excelFile.xls') 3.使用技巧 获取一个工作表

  • 解决python xlrd无法读取excel文件的问题

    读取文件时报错: xlrd.biffh.XLRDError: Unsupported format, or corrupt file: Expected BOF record; found '<?xml' 该xls文件在打开时确实会警告该文件与扩展名格式不一致.用文本编辑器打开该xls文件查看,发现确实不是xls文件,而是xml文件被保存为了xls文件. 解决办法:将文件后缀名改为.xml,作为xml文件读入. 改名代码: import os os.rename(u"D:\PycharmP

  • Python xlrd读取excel日期类型的2种方法

    有个excle表格需要做一些过滤然后写入数据库中,但是日期类型的cell取出来是个数字,于是查询了下解决的办法. 基本的代码结构 复制代码 代码如下: data = xlrd.open_workbook(EXCEL_PATH)  table = data.sheet_by_index(0)  lines = table.nrows  cols = table.ncols  print u'The total line is %s, cols is %s'%(lines, cols) 读取某个单元

随机推荐