python的openpyxl实现excel操作

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 单元格最小最大列

我们可以利用他轻松定位到我们所需的数据位置
python的openpyxl实现excel操作_第1张图片
来看这个例子,我们想要获取送货单对应数据包含的范围,但是黄色标注部分还存在其他的合并单元格,那么我们就可以通过遍历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)

你可能感兴趣的:(python,python,excel,openpyxl)