xlrd库主要用于读取excel(支持 xlsx和xls 格式)数据,xlwt是写excel的库,本章主要讲解xlrd的部分操作。
安装库
安装库:pip install xlrd
导入库:import xlrd
使用
工作表
方法 | 说明 | 备注 |
---|---|---|
xlrd.open_workbook(filename[, logfile,verbosity, …]) | 根据filename打开指定文件 | |
xlrd.sheet_by_name( sheet_name) | 通过sheet名称获取对应工作表 | 返回xlrd.sheet.Sheet对象 |
xlrd.sheet_by_index(index) | 通过索引获取对应顺序的sheet对象 | 下标从0开始,返回xlrd.sheet.Sheet对象 |
xlrd.sheets() | 获取全部的sheet | 返回的是列表,列表每个元素都是 xlrd.sheet.Sheet 对象 |
# -*- coding: utf-8 -*-
import xlrd
# 根据filename打开指定文件
work_book = xlrd.open_workbook("E:\\work\\py_pratice\\test.xlsx")
# 通过sheet名称获取对应sheet的对象
employee_infos = work_book.sheet_by_name("员工信息") # 获取“员工信息”表
print(employee_infos)
# 通过索引获取对应顺序的sheet对象(从0开始算)
product_prices = work_book.sheet_by_index(0) # 获取第一个sheet表数据
print(product_prices)
# 获取全部的sheet(返回的是列表,列表每个元素都是 xlrd.sheet.Sheet 对象)
all_tables = work_book.sheets()
print(all_tables)
all_tables_name = work_book.sheet_names()
print(all_tables_name)
运行结果:
<xlrd.sheet.Sheet object at 0x000001981080EB70>
<xlrd.sheet.Sheet object at 0x000001981080EB38>
[<xlrd.sheet.Sheet object at 0x000001981080EB38>, <xlrd.sheet.Sheet object at 0x000001981080EB70>]
[‘商品价格’, ‘员工信息’]
行操作
方法 | 说明 | 备注 |
---|---|---|
Sheet.nrows | 获取该sheet中的有效行数 | |
Sheet.row(rowx) | 获取sheet中的第rowx行数据 | 行数rowx从0开始算起 |
Sheet.row_slice( rowx, start_colx=0, end_colx=None) | 获取sheet中rowx行指定列(开始列start_colx,结束列end_colx前)的数据(包含了数据类型) | 行数rowx从0开始算起,不包含结束列end_colx |
Sheet.row_values(rowx, start_colx=0, end_colx=None) | 获取sheet中rowx行指定列(开始列start_colx,结束列end_colx前)的数据(不包含数据类型) | 行数rowx从0开始算起,不包含结束列end_colx |
Sheet.row_len(rowx) | 获取第rowx行的有效单元格长度 | 行数rowx从0开始算起 |
# -*- coding: utf-8 -*-
import xlrd
# 根据filename打开指定文件
work_book = xlrd.open_workbook("E:\\work\\py_pratice\\test.xlsx")
# 通过sheet名称获取对应sheet的对象
employee_infos = work_book.sheet_by_name("员工信息") # 获取“员工信息”表
# 获取该sheet中的有效行数
nrows = employee_infos.nrows
print(nrows)
# 获取sheet中的某行数据
data = employee_infos.row(2)
print(data)
# 获取sheet中某行指定列的数据(包含了数据类型)
data2 = employee_infos.row_slice(2, 1, 4)
print(data2)
# 获取sheet中某行指定列的数据(不包含数据类型)
data3 = employee_infos.row_values(2, 1, 4)
print(data3)
# 获取某行的有效单元格长度
data4 = employee_infos.row_len(2)
print(data4)
运行结果:
6
[text:‘1002’, text:‘李四’, text:‘男’, number:22.0, text:‘良好’]
[text:‘李四’, text:‘男’, number:22.0]
[‘李四’, ‘男’, 22.0]
5
列操作
方法 | 说明 | 备注 |
---|---|---|
Sheet.ncols | 获取某sheet中的有效列数 | |
Sheet.col_slice(colx, start_rowx=0, end_rowx=None) | 获取sheet中第colx列从start_rowx行到end_rowx行的数据(包含了数据类型) | 列数colx从0开始算起,不包含结束行end_rowx |
Sheet.col_values(self, colx, start_rowx=0, end_rowx=None) | 获取sheet中第colx列从start_rowx行到end_rowx行的数据(不包含数据类型) | 列数colx从0开始算起,不包含结束行end_rowx |
# -*- coding: utf-8 -*-
import xlrd
# 根据filename打开指定文件
work_book = xlrd.open_workbook("E:\\work\\py_pratice\\test.xlsx")
# 通过sheet名称获取对应sheet的对象
employee_infos = work_book.sheet_by_name("员工信息") # 获取“员工信息”表
# 获取某sheet中的有效列数
ncols = employee_infos.ncols
print(ncols)
# 获取sheet中某列连续行的数据(包含了数据类型)
cols2 = employee_infos.col_slice(1, 1, 3)
print(cols2)
# 获取sheet中某列连续行的数据(不包含数据类型)
cols3 = employee_infos.col_values(1, 1, 3)
print(cols3)
运行结果:
5
[text:‘张三’, text:‘李四’]
[‘张三’, ‘李四’]
附件
excel数据