文章目录
一、介绍
python操作excel主要用到xlrd和xlwt两个库,即xlrd是读excel,xlwt是写excel库
xlrd模块:可读取.xls、.xlsx表格
xlwt模块:可写入.xls表格(不可写入.xlsx文件!!!)
二、安装方法
xlrd模块和xlwt模块不是内置模块需要手动安装
pip install xlrd
pip install xlwt
三、 excel表格描述
两个模块对excel表格的结构定义都非常直观,和平时使用excel表格的习惯基本一致。
总体分为三个级别:工作簿——工作表——单元格。
- 一个工作簿就是一个以.xls/.xlsx结尾的文件
- 一个工作簿有多个工作表(sheet),可以通过索引或者名字访问
- 一个工作表包含多行、多列,行列交叉位置的基本单元就是单元格(cell),内容都写入在单元格中。单元格可通过行、列索引访问。
在python中将 工作簿——工作表——单元格,视为对象
- WorkBook:工作簿对象
- Sheet:表单对象
- Cell:表格对象
四、xlrd读取excel文件
4.1 获取WorkBook对象
workbook = xlrd.open_workbook(filename=None)
参数:filename为要打开的电子表格文件的路径。
返回值: 是xlrd.book.Book对象
4.1 xlrd操作sheet对象
一个Excel中可能有多个Sheet,那么可以通过以下方法来获取想要的Sheet信息
方法 | 功能 |
---|---|
workbook.sheet_names() | 获取所有的sheet的名字,以列表形式存储 |
workbook.sheet_by_index(1) | 根据索引获取sheet对象 |
workbook.sheets() | 获取所有的sheet对象 |
sheet.nrows | 获取指定sheet的所有行数 |
sheet.ncols | 获取指定sheet的所有列数 |
workbook.sheet_by_name(‘sheet’) | 根据sheet名字获取sheet对象 |
操作文件(成绩表.xlsx):
代码实例:
import xlrd
workbook = xlrd.open_workbook("成绩表.xlsx")
# ================= sheet相关操作 =================
print(type(workbook))
# 获取所有的sheet的名字
print(workbook.sheet_names())
# 根据索引获取sheet对象
sheet1 = workbook.sheet_by_index(1)
print(type(sheet1)) # <class 'xlrd.sheet.Sheet'>
print(sheet1.name) # 可以调用sheet对象的name属性得到sheet名称
# 获取所有的sheet对象
sheet2 = workbook.sheets()
print(type(sheet2)) # <class 'list'>
for i in sheet2:
print(i.name)
# 获取指定sheet的行数和列数
sheet = workbook.sheet_by_index(0)
print({
"总行数":sheet.nrows,"总列数":sheet.ncols})
4.2 xlrd操作cell对象
edu.csdn.net获取Cell及其属性:每个Cell代表的是表格中的一格。以下方法可以方便获取想要的cell
方法 | 功能 |
---|---|
sheet.cell(row,col) | 获取指定行和列的cell对象 |
sheet.row_slice(row,start_col,end_col) | 获取指定行的某几列的cell对象。 |
sheet.col_slice(col,start_row,end_row) | 获取指定列的某几行的cell对象。 |
sheet.cell_value(row,col) | 获取指定行和列的值。 |
sheet.row_values(row,start_col,end_col) | 获取指定行的某几列的值,是sheet.row_slice的高级用法。 |
sheet.col_values(col,start_row,end_row) | 获取指定列的某几行的值,是sheet.col_slice的高级用法。 |
代码实例:
# ================= cell相关操作 =================
from xlrd.sheet import Cell
sheet = workbook.sheet_by_index(0) # 获取sheet
# 获取指定行和列的cell对象
cell = sheet.cell(0,1)
print(type(cell)) # <class 'xlrd.sheet.Cell'>
print(cell) # text:'语文' 得到的是一个键值对,可以通过value属性获取值
# 获取指定行的某几列的cell对象
cells = sheet.row_slice(1, 1, 4)
for cell in cells:
print(cell.value)
# 获取指定行的某几列的值
print(sheet.row_values(1, 1, sheet.nrows)