xlrd库是一个python用于操作excel的第三方库。它的主要功能是用来读取excel。通常会与xlwt 、 xlutils组合进行使用。
注意!这里的操作excel,实际上与excel无关,不需要下载excel,xlrd库直接操作的是excel打开的xls文件!
注意!xlrd库只能读取excel,不能修改,编写excel!注意!xlrd库有专门的xlrd3版本,该版本是最新的xlrd库,提供了更新的支持(比如支持xlsx文件),只需要引用的时候使用
xlrd3
代替xlrd
即可!
可以使用pip进行安装,这是最简单也是最普遍的安装方式!
在cmd中输入pip install xlrd
即可安装xlrd库。
安装成功后可以使用pip list
来检查是否正确安装以及查看当前的xlrd版本。
注意:xlrd较高版本中不支持.xlsx文件,可以手动将版本降至更低的版本或者将.xlsx文件改为.xls文件,也可以采用最新的xlrd3代替xlrd
- 先卸载掉现有的 xlrd —> pip uninstall xlrd
接下来的文章由于此原因使用1.2.0版本的xlrd进行介绍
- 重新安装指定版本的 xlrd —> pip install xlrd == 1.2.0
下面以这个工作簿为例
import xlrd
# filename是文件的路径名称
workbook = xlrd.open_workbook(filename=r"C:UsersWindows10Desktopxlsx文件.xlsx")
3、获取需要操作的sheet表格(有三种方法)
①通过索引获取
# 获取第一个sheet表格
table = workbook.sheets()[0]
②通过索引顺序获取
# 通过索引顺序获取
table = workbook.sheet_by_index(0)
③通过sheet名称获取
# 通过sheet名称获取
table = workbook.sheet_by_name(sheet_name="Sheet1")
补充:获取工作薄中所有sheet名称
# 获取工作薄中所有的sheet名称
names = workbook.sheet_names()
print(names)
运行结果:
常用1:获取sheet中有多少行和多少列
# 获取sheet中有效行数
# 需要先指定sheet工作表
table = workbook.sheet_by_name(sheet_name="视频课列表")
row = table.nrows
print(row)
运行结果:
# 获取sheet中有效列数
# 需要先指定sheet工作表
table = workbook.sheet_by_name(sheet_name="视频课列表")
col = table.ncols
print(col)
运行结果
常用2:获取一行中有多少列数据
# 返回该行的有效单元格长度
# 需要先指定sheet工作表
table = workbook.sheet_by_name(sheet_name="视频课列表")
num = table.row_len(0)
print(num)
打印结果:
常用3:获取指定行或者列中所有的数据
# rowx表示是获取第几行的数据
# start_col表示从索引为多少开始,end_colx表示从索引为多少结束,
# end_colx为None表示结束没有限制
# 获取指定行中的数据并以列表的形式返回
# 需要先指定sheet工作表
table = workbook.sheet_by_name(sheet_name="视频课列表")
table_list = table.row_values(rowx=0, start_colx=0, end_colx=None)
print(table_list)
运行结果为:
# colx表示是获取第几列的数据
# start_rowx表示从索引为多少开始,end_rowx表示从索引为多少结束,
# end_rowx为None表示结束没有限制
# 获取指定列中的数据并以列表的形式返回
# 需要先指定sheet工作表
table = workbook.sheet_by_name(sheet_name="视频课列表")
table_list = table.col_values(colx=0, start_rowx=0, end_rowx=None)
print(table_list)
运行结果为:
补充:了解即可
# 需要先指定sheet工作表
table = workbook.sheet_by_name(sheet_name="视频课列表")
#返回由该列中所有的单元格对象组成的列表
print(table.row(0))
#返回由该行中所有的单元格对象组成的列表
print(table.row_slice(0))
#返回由该行中所有单元格的数据类型组成的列表
print(table.row_types(0, start_colx=0, end_colx=None))
运行结果为:
# 需要先指定sheet工作表
table = workbook.sheet_by_name(sheet_name="视频课列表")
#返回由该列中所有的单元格对象组成的列表
print(table.col(0, start_rowx=0, end_rowx=None))
#返回由该列中所有的单元格对象组成的列表
print(table.col_slice(0, start_rowx=0, end_rowx=None))
#返回由该列中所有单元格的数据类型组成的列表
print(table.col_types(0, start_rowx=0, end_rowx=None))
运行结果为:
# 获取指定单元格内的值(第二行第一列,在python中从零开始计算序号)
# 需要先指定sheet工作表
table = workbook.sheet_by_name(sheet_name="视频课列表")
value = table.cell_value(rowx=1, colx=0)
print(value)
运行结果为:
# 需要先指定sheet工作表
table = workbook.sheet_by_name(sheet_name="视频课列表")
value = table.cell(rowx=1, colx=0)
print(value)
运行结果
3、获取单元格的数据类型
python读取excel中单元格的内容返回的有5种类型。分别为:
即date的ctype=3,这时需要使用xlrd的xldate_as_tuple来处理为date格式,先判断表格的ctype=3时xldate才能开始操作。
# 需要先指定sheet工作表
table = workbook.sheet_by_name(sheet_name="视频课列表")
value = table.cell_type(rowx=0, colx=1)
print(value)
运行结果为:
五、案例
需求:获取上面表格中的数据并依次打印出来
import xlrd
workbook = xlrd.open_workbook(filename=r"C:UsersEeeDong-10Desktop课程内容.xlsx")
# 需要先指定sheet工作表
table = workbook.sheet_by_name(sheet_name="视频课列表")
# 获取行数
rows = table.nrows
# 获取列数
cols = table.ncols
# 循环获取每行的数据
for row in range(rows):
for col in range(cols):
value = table.cell_value(row, col)
print("第{}行{}列的数据为:{}".format(row, col, value))
运行结果为:
有一部分小伙伴学习python的目的就是为了实现办公自动化的目的。通过使用更易学习的python替代excel中自带的vbs脚本,来实现exce...
C#数值8位和16位整数8位和16位整数类型为byte,sbyte,short和ushort。C#根据需要将它们隐式转换为更大的类型。当尝试将结果分...
C#异常using语句许多类封装了非托管资源。这些类实现 System.IDisposable ,它定义了一个名为Dispose的单一无参数方法来清理这...