openpyxl
是一个Python第三方库,可实现对Excel文件的读写和修改,只能处理 xlsx
文件,不能处理 xls
文件
系列
Excel基本概念
Excel有两种专门保存文件的格式
Excel2003版本的文件格式是xls
Excel2007及之后的版本的文件格式就是xlsx
Excel文档的基本概念
一个Excel文档也称为一个工作簿(workbook)
每个工作簿里可以有多个工作表(worksheet)
当前打开的工作表又叫活动表
每个工作表里有行和列
特定的行与列相交的方格称为单元格(cell),比如B9

环境
操作系统 : windows10
开发工具 : VSCode
python版本 : 3.8.6
openpyxl版本 : 3.0.3
安装
使用 pipenv 安装
使用pip3安装
1
| python3 -m pip install openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple
|
写入
获取工作簿对象
1 2 3 4
| from openpyxl import Workbook
wb = Workbook()
|
创建工作表
工作簿对象.create_sheet(name,int)
name
: 工作表名
int
: 决定工作表位置的一个整数
未给出参数默认按顺序命名Sheet1 Sheet2…
1 2
| wb.create_sheet() wb.create_sheet()
|
给出参数按顺序命名aa bb
1 2
| wb.create_sheet('aa') wb.create_sheet('bb')
|
给出数字参数决定工作表位置
1 2 3
| wb.create_sheet('bb', 0) wb.create_sheet('cc', 1) wb.create_sheet('dd', -1)
|
删除工作表
del 工作簿对象['工作表名']
查看所有工作表
工作簿对象.sheetnames
1 2
| ws_name = wb.sheetnames
|
获取工作表对象
活动表是指已打开的工作表
1 2 3 4 5
| ws = wb.active
ws = wb['雨园']
|
重命名活动表
工作表对象.title = '值'
写入单元格
工作表对象['单元格'] = '值'
工作表对象['单元格'].value = '值'
1 2 3 4 5 6 7 8 9
| ws['A1'] = '雨园' ws['B1'] = '博客' ws['C1'] = '雨园博客'
ws['A2'].value = '雨园' ws['B2'].value = '博客' ws['C2'].value = '雨园博客'
|
行列
写入一行
工作表对象.append(列表)
从最后一个非空行的后一行开始写入
1 2
| list = ['雨园', '博客', '雨园博客'] ws.append(list)
|
删除某行
工作表对象.delete_rows(行号)
删除某列
工作表对象.delete_rows(列号)
写入多行
从最后一个非空行的后一行开始写入
1 2 3 4 5 6 7 8 9
| list = [ ['夜雨寄北', '李商隐'], ['君问归期未有期', '巴山夜雨涨秋池'], ['何当共剪西窗烛', '却话巴山夜雨时'] ]
for row in list: ws.append(row)
|
行高
工作表对象.row_dimensions[行号].height = 数字
1 2 3 4
| ws.row_dimensions[1].height = 20
ws.row_dimensions[2].height = 20
|
列宽
工作表对象.column_dimensions['列名'].width = 数字
1 2 3 4
| ws.column_dimensions['A'].width = 10
ws.column_dimensions['B'].width = 20
|
保存写入工作簿
工作簿对象.save('保存路径')
只是修改文件名相当于 重命名
修改了文件路径相当于 另存为
读取
获取工作簿对象
1 2 3 4
| from openpyxl import load_workbook
wb = load_workbook('./雨园.xlsx')
|
查看所有工作表
工作簿对象.sheetnames
1 2
| ws_name = wb.sheetnames
|
获取工作表对象
活动表是指已打开的工作表
1 2 3 4 5
| ws = wb.active
ws = wb['雨园']
|
读取单元格
获取单元格对象
工作表对象['单元格']
获取单元格的值
单元格对象.value
读取行列
最大行
工作表对象.max_row
最大列
工作表对象.max_column
读取某行
工作表对象[行号]
1 2 3 4 5
| row = ws[1] for cell in row: value = cell.value
|
读取某列
工作表对象['字母列']
1 2 3 4 5
| col = ws['A'] for cell in col: value = cell.value
|
读取某区域行
工作表对象.iter_rows(min_row, max_row, min_col, max_col, values_only)
min_row
: 起始行,默认第一行
max_row
: 终止行
min_col
: 起始列,默认第一列
max_col
: 终止列
values_only
: 为True则返回单元格的值,用于只读数据,为False则返回单元格对象,用于写入数据
获取第一行至五行,第一列(A列)至第三列(C列)范围的所有数据,值不存在返回
1 2 3 4 5 6
| generator = ws.iter_rows(min_row=1, max_row=5, min_col=1, max_col=3,values_only=True)
for row in generator: print(row)
|
读取所有行
工作表对象.values
1 2 3 4 5 6
| generator = ws.values
for row in generator: print(row)
|
保存读取工作簿
工作簿对象.save('保存路径')
只是修改文件名相当于 重命名
修改了文件路径相当于 另存为
如果只是读取工作簿,这一步可以不写
来源
openpyxl官方文档