openpyxl

2023-07-30 17:20:33 浏览数 (2)

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')

0 人点赞