openpyxl用来操作xlsx文件(不支持xls文件) 以下用wb代表WorkBook类,ws代表WorkSheet类,cell代表单元格。
工作簿:
工作簿可以看作一个xlsx文件。
- WorkBook() 类 新建一个工作簿对象
- load_workbook() 函数 导入一个已有的工作簿
- wb.save() 方法 保存工作簿。
示例:
代码语言:javascript复制from openpyxl import *
# 新建一个工作簿对象
wb = Workbook()
# 保存工作簿
wb.save('hello.xlsx')
# 加载工作簿
wb = load_workbook('hello.xlsx')
工作表:
使用wb['title']获取名为title的工作表
- wb.create_sheet('title') 方法 创建一个名为title的工作表
- wb.sheetnames 属性 以列表形式返回所有工作表名称
- wb.active 属性 返回当前活动的工作表对象
- ws.title 属性 返回工作表名称
示例:
代码语言:javascript复制from openpyxl import *
# 新建一个工作簿对象
wb = Workbook()
# 新建两个的工作表,0表示在第一个位置插入,-1在倒数第二个,默认倒数第一个
# title1在最后一个位置插入
# title2在倒数第二个位置插入
ws1 = wb.create_sheet('title1')
ws2 = wb.create_sheet('title2', -1)
# 获取当前工作表
ws = wb.active
# 输出工作表名称
print(ws.title)
# 切换到title2
ws = wb['title2']
# 切换到title2
wb.active = 1
ws = wb.active
- ws.max_row 属性 获取存在数据的最大一行索引
- ws.min_row 属性 获取存在数据的最小一行索引
- ws.max_column 属性 获取存在数据的最大一列索引
- ws.min_column 属性 获取存在数据的最小一列索引
- ws.insert_rows(i,n) 方法 从第i行插入n行(包括i),默认一行
- ws.insert_cols(j,n) 方法 从第j列插入n列(包括j),默认一行
- ws.delete_rows(i,n) 方法 从第i行删除n行(包括i),默认一行
- ws.delete_cols(j,n) 方法 从第j列删除n列(包括j),默认一行
- wb.copy_worksheet('title') 方法 返回title表的复制
- ws.sheet_properties.tabColor 属性 表的颜色,例如#304050
单元格:
单元格的选择:
代码语言:javascript复制# 选择A1单元格
cell = ws['A1']
# 选择A2到B3的单元格
cells = ws['A2': 'B3']
cells = ws['A2: B3']
# 选择第2行到第3行的单元格
cells = ws[2: 3]
# 选择第A列到第B列的单元格
cells = ws['A': 'B']
cells = ws['A: B']
# 选择所有行/列
cells = ws.rows
cells = ws.columns
# iter_rows()方法与iter_cols()方法
# 参数:min_col, max_col, min_row, max_row, values_only
# 参数:最小列,最大列,最小行,最大行,是否只返回值
# 返回第1,2列,3,4行的所有行
cells = ws.iter_rows(1, 2, 3, 4,True)
单元格的值:
使用ws['A1'].value获取A1的值 使用ws['A2': 'B3'].values获取A2到B3的值,每行为一个元组
单元格属性:
- cell.row 单元格行索引
- cell.column 单元格列索引
- cell.column_letter 单元格列名
- cell.coordinate 单元格坐标
- cell.data_type 单元格值类型,返回n/s/d,数字/字符串/日期
- cell.encoding 单元格编码类型
- cel.has_style 单元格是否有样式
- cell.style 单元格样式
操作函数:
代码语言:javascript复制# 合并单元格
# 参数start,end
# 参数start_row, end_row, start_column, end_column
ws.merge_cells('A1', 'B3')
ws.merge_cells(start_row=1, end_row=2, start_column=3, end_column=4)
# 取消合并单元格
# 参数start,end
# 参数start_row, end_row, start_column, end_column
ws.unmerge_cells('A1', 'B3')
ws.unmerge_cells(start_row=1, end_row=2, start_column=3, end_column=4)
# 插入图片
# 参数,img,anchor
img = Image('hello.png')
ws.add_image(img=img, anchor='A1')
# 颜色填充
# PatternFill参数:
# patternType,fgColor,bgColor,填充类型,前景色,背景色
ws['A1'].fill = ws['A1'].fill = PatternFill(patternType='solid', fgColor='203040')