咔片PPT · AI自动生成演示文稿,模板丰富、排版精美 讯飞智文 · 一键生成PPT和Word,高效应对学习与办公

python的openpyxl实现excel操作

前言:此文章内容均在python3.7/openpyxl3.0.5版本下运行成功

1.一些基本参数

workbook = openpyxl.load_workbook(path) #读取指定的excel sheet = workbook[sheet_name] #读取指定的sheet页 sheet.max_row+1 #该excel的最大数据行 sheet.max_column+1 #该excel的最大数据列 sheet.title #指定sheet页的名字 sheet.cell(row=r,column=c).value #指定sheet指定行列的数据值 sheet[row+column] #指定sheet指定行列的数据值,例如 sheet[A1] #此处的值可以使用excel的计算公式 workbook.save(path) #将修改好的excek保存到指定路径

2.excel查找信息并替换

#excel查找信息并替换,该方法只能查找一整列的数据 #row表示需要行数,column表示需要查找的列数 def findExcelInfo(path,name,value): workbook=openpyxl.load_workbook(path) sheet=workbook[name] for r in range(2,sheet.max_row+1): v=sheet.cell(row=r,column=3).value if v==value[1]: sheet.cell(row=r,column=2).value=value[0] workbook.save(path) break

3.excel添加数据

def addExcelLine(value): workbook=openpyxl.load_workbook(path) sheet=workbook["Sheet1"] sheet['A1']=value workbook.save(path)

4.excel查找合并单元格

这里有两个有用的api

sheet.merged_cells sheet.merged_cells.range

这里推荐merged_cells.range这个接口,该接口会回传包含所有合并单元格的属性集合,包括但不限于:

min_row/max_row 单元格最小最大行 min_col/max_col 单元格最小最大列

我们可以利用他轻松定位到我们所需的数据位置



来看这个例子,我们想要获取送货单对应数据包含的范围,但是黄色标注部分还存在其他的合并单元格,那么我们就可以通过遍历merged_cells.range这个集合再加上限定条件来筛选出我们需要的部分.

for cell in sheet.merged_cells.ranges: if cell.min_col == 1 and cell.max_col ==1: r = cell.min_row while sheet.cell(row=r,column=3).value != None and r <= cell.max_row: list = [] list.append(sheet.cell(row=r,column=2).value) list.append(sheet.cell(row=r,column=3).value)

这样就很轻松获取了对应的12月1号对应的数据块,同时还可以避免读取数据超出范围。

5.创建和删除sheet页

workbook.create_sheet(name,index) #创建sheet页 workbook.remove(sheet) #删除sheet页

create_sheet其中name是sheet页的名字,index是插入页插入的位置(从0开始,可以不写,默认是最后面)

其中remove函数中的sheet指的是sheet对象,而不是sheet页的名字,应用场景如下:

workbook = openpyxl.load_workbook(path) sheet = workbook['sheet1'] workbook.remove(sheet)