一、安装xlrd模块:
1、打开cmd输入命令:
pip install xlrd
2、验证安装是否成功:
- 在cmd输入 python 进入python环境
- 然后输入 import xlrd,不报错即按照成功
二、常用方法:
1、导入模块和打开Excel:
import xlrd wb = xlrd.open_workbook("income.xlsx")
2、获取sheet:
- 获取所有sheet名字:x1.sheet_names()
- 获取sheet数量:x1.nsheets
- 获取所有sheet对象:x1.sheets()
- 通过sheet名查找:x1.sheet_by_name("test”)
- 通过索引查找:x1.sheet_by_index(3)
import xlrd wb = xlrd.open_workbook("income.xlsx") print(f"包括的表单数量:{wb.nsheets}") print(f"表单的名分别为:{wb.sheet_names()}") print(f"获取所有的sheet对象:{wb.sheets()}") print(f"通过sheet名查找:{wb.sheet_by_name('2018')}") print(f"通过sheet名查找:{wb.sheet_by_index(0)}")
输出:
包括的表单数量:3 表单的名分别为:['2018', '2017', '2016'] 获取所有的sheet对象:[<xlrd.sheet.Sheet object at 0x000001D8B478D0C8>, <xlrd.sheet.Sheet object at 0x000001D8B47D7E08>, <xlrd.sheet.Sheet object at 0x000001D8B47C6108>] 通过sheet名查找:<xlrd.sheet.Sheet object at 0x000001D8B478D0C8> 通过sheet名查找:<xlrd.sheet.Sheet object at 0x000001D8B478D0C8>
3、获取sheet数据:
- 获取sheet名:sheet.name
- 获取总行数:sheet.nrows
- 获取总列数:sheet.ncols
import xlrd wb = xlrd.open_workbook("income.xlsx") #获取指定的sheet对象 sheet = wb.sheet_by_name("2018") print(f"获取sheet名:{sheet.name}") print(f"获取总行数:{sheet.nrows}") print(f"获取总列数:{sheet.ncols}")
输出
D:\tools\Python37\python.exe E:/teachingexample/samples/excel/test4.py 获取sheet名:2018 获取总行数:13 获取总列数:2
4、单元格批量读取:
a)行操作:
- sheet1.row_values(0) # 获取第一行所有内容,合并单元格,首行显示值,其它为空。
- sheet1.row(0) # 获取单元格值类型和内容
- sheet1.row_types(0) # 获取单元格数据类型
import xlrd wb = xlrd.open_workbook("income.xlsx") #获取指定的sheet对象 sheet = wb.sheet_by_name("2018") #row_values 获取某行所有内容,结果返回一个列表 print(f"获取第一行所有内容:{sheet.row_values(0)}") #row(0)获取指点单元格的类型和值 print(f"获取单元格值类型和内容:{sheet.row(0)}") print(f"获取单元格数据类型:{sheet.row_types(0)}")
输出
获取第一行所有内容:['月份', '收入'] 获取单元格内容:[text:'月份', text:'收入'] 获取总列数:array('B', [1, 1])
b) 表操作
- sheet1.row_values(0, 6, 10) # 取第1行,第6~10列(不含第10行)
- sheet1.col_values(0, 0, 5) # 取第1列,第0~5行(不含第5行)
- sheet1.row_slice(2, 0, 2) # 获取单元格值类型和内容
- sheet1.row_types(1, 0, 2) # 获取单元格数据类型
import xlrd wb = xlrd.open_workbook("income.xlsx") #获取指定的sheet对象 sheet = wb.sheet_by_name("2018") #取第1行,第6~10列(不含第10表) print(sheet.row_values(0, 6, 10)) #取第1列,第0~5行(不含第5行) print(sheet.col_values(0, 0, 5)) #获取单元格值类型和内容,同sheet1.row(0) print(sheet.row_slice(2, 0, 2)) #获取单元格数据类型 print(sheet.row_types(1, 0, 2))
5、特定单元格读取:
a) 获取单元格值:
- sheet1.cell_value(1, 2)
- sheet1.cell(1, 2).value
- sheet1.row(1)[2].value
b) 获取单元格类型:
- sheet1.cell(1, 2).ctype
- sheet1.cell_type(1, 2)
- sheet1.row(1)[2].ctype
import xlrd wb = xlrd.open_workbook("income.xlsx") #获取指定的sheet对象 sheet = wb.sheet_by_name("2018") # 特定单元格读取 # 取值 print(sheet.cell_value(0, 1)) print(sheet.cell(0, 1).value) print(sheet.row(0)[1].value) #取类型 print(sheet.cell(0, 1).ctype) print(sheet.cell_type(0, 1)) print(sheet.row(0)[1].ctype)
6、(0,0)转换A1:
- xlrd.cellname(0, 0) # (0,0)转换成A1
- xlrd.cellnameabs(0, 0) # (0,0)转换成$A$1
- xlrd.colname(30) # 把列由数字转换为字母表示
import xlrd wb = xlrd.open_workbook("income.xlsx") #获取指定的sheet对象 sheet = wb.sheet_by_name("2018") # (0,0)转换成A1 print(xlrd.cellname(0, 0)) # (0,0)转换成$A$1 print(xlrd.cellnameabs(0, 0)) #把列由数字转换为字母表示 print(xlrd.colname(30))
输出:
D:\tools\Python37\python.exe E:/teachingexample/samples/excel/test4.py A1 $A$1 AE