Bootstrap

python中xlrd模块的基本使用

目前接触到的 python 中用来对 excel 操作的模块包括:xlrd 和 xlwt,前者用来对 excel 进行读操作,后者用来进行写操作,这里先来说一下 xlrd 模块

一、xlrd 模块的安装

打开cmd 窗口,输入 pip install xlrd 安装完成即可,需要注意:默认安装的是最新版的 xlrd ,但是最新版已经不支持 .xlsx 文件,因此需要使用以下命令卸载并安装1.2版本:

pip uninstall xlrd #卸载已安装版本pip install xlrd==1.2.0 #安装1.2.0版本

二、xlrd模块的使用

1.导入模块并打开 .xlsx 工作簿

import xlrdwb = xlrd.open_workbook(filename)#filename 是文件的路径名,如下workbook = xlrd.open_workbook(filename=r'C:\Users\Windows10\Desktop\xlsx文件.xlsx')#open_workbook 返回的是一个对象

在 windows 上文件路径名采用反斜杠,而反斜杠在 python 中具有转义的作用,所以在字符串前面加上 r 来表示原始字符串,使路径名不产生转义;此外,如果路径带中文,也是需要加上 r

其实也可以在调用 open_workbook 函数时将路径名用斜杠表示,此时不需要再加 r ,如下:

wb = xlrd.open_workbook('C:/Users/cheng/Desktop/test.xlsx')

2.获取需要操作的 sheet 表格

import xlrdwb = xlrd.open_workbook('C:/Users/cheng/Desktop/test.xlsx')#1.通过索引,获取第一个 sheet 表格sheet1 = wb.sheets()[0]#2.通过索引顺序获取sheet2 = wb.sheet_by_index(1)#3.通过 sheet 名称获取sheet3 = wb.sheet_by_name('SoC')## 以上三个函数都会返回一个 xlrd.sheet.Sheet() 的对象#4.获取 wb 中的所有 sheet 名称,并返回一个列表names = wb.sheet_names()print(names)#判断 wb 中是否存在某个 sheet,返回 bool值 wb.sheet_loaded(sheet_name or index)#通过 sheet 名索引is_exist = wb.sheet_loaded('SoC')print(is_exist)#通过 sheet index 索引is_exist = wb.sheet_loaded(0)print(is_exist)

上面的运行结果如下:

  1. 行操作 和 列操作

行列通用操作:

#获取 sheet 中的有效行数 和 有效列数,注意后面不带 ()row = sheet3.nrowscol = sheet3.ncolsprint(row, col)#获取一行中有多少列数据,其实就是有效列数num = sheet3.row_len(2)print(num)#获取指定行或者列中的所有单元格的数据,并将这些数据作为一个列表返回table_list = sheet3.row_values(rowx=1, start_colx=1, end_colx=None)print(table_list)table_list = sheet3.row_values(1)print(table_list)# rowx 表示的是获取第几行的数据# start_colx 表示从第几列开始获取,end_colx 表示第几列结束获取,end_colx 为None 表示结束没有限制table_list = sheet3.col_values(colx=0, start_rowx=0, end_rowx=None)print(table_list)table_list = sheet3.col_values(2)print(table_list)# colx表示是获取第几列的数据# start_rowx表示从索引为多少开始,end_rowx表示从索引为多少结束,end_rowx为None表示结束没有限制#获取该行中所有单元格对象组成的列表,每个元素的格式为 类型:值value = sheet3.row(0)print(value)# 获取某一列中的所有单元格的值以及其类型,组成列表返回value = sheet3.col(1)print(value)# 以切片的形式获取某一行的单元格的值及其类型,第一个参数是行数,第二个和第三个参数是切片参数,表示获取的列序号,左闭右开value = sheet3.row_slice(1, 1, 3)print(value)# 以切片的形式获取某一列的单元格的值及其类型,第一个参数是列数,第二个和第三个参数是切片参数,表示获取的行序号,左闭右开value = sheet3.col_slice(1, 1, 3)print(value)# 获取某一行中的每一个单元格的类型value = sheet3.row_types(1)print(value)print(type(value))# 获取某一列中的每一个单元格的类型value = sheet3.col_types(1)print(value)print(type(value))

运行结果如下:

行特有操作:

# 获取sheet 的所有生成器,返回一个列表,列表中的每一个元素是由每一行单元格对象组成的列表row = sheet3.get_rows()for one in row: print(one)

运行结果如下:

  1. 单元格操作

#获取单元中的值print(sheet3.cell(0, 0).value)print(sheet3.cell_value(0, 0))#获取单元格的数据类型print(sheet3.cell_type(0, 0))

运行结果如下:

这里需要补充

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

0 empty
1 string(text)
2 number
3 date
4 boolean
5 error
即date的ctype=3,这时需要使用xlrd的xldate_as_tuple来处理为date格式,先判断表格的ctype=3时xldate才能开始操作;

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明vb.net教程C#教程python教程

原文链接:python中xlrd模块的基本使用_python xlrd-CSDN博客

;