基于openpyxl实现几个常用的excel自动化操作函数,具体功能包括查询表的规模、获取指定单元格的数据、获取行、列数据、查询表头、搜索某列包含关键词的所有行数据,后续将继续补充和加强功能实现
#!/bin/usr/python3
# author:zhouzhuo
# create time: 2020/09/05
'''
该模块用于对excel表格操作,具体功能包括查询表的规模、获取指定单元格的数据、获取行、列数据
查询表头、搜索某列包含关键词的所有行数据
'''
import openpyxl
#指定文件位置和sheet,返回sheet对象
def get_sheet(excel_path, sheet_name):
work_book = openpyxl.load_workbook(excel_path)
work_sheet = work_book.get_sheet_by_name(sheet_name)
return work_book,work_sheet
#获取sheet的行列规模
def get_sheet_scale(work_sheet):
return work_sheet.max_row,work_sheet.max_column
#获取指定sheet页面的指定行列值
def get_cell_value(work_sheet,row,column):
return work_sheet.cell(row=row,column=column).value
#获取指定sheet的指定行的数据,支持取值起始位置和跳跃步长取值
def get_row_data(work_sheet,row,begin=2,step=1):
row_data = []
max_column = work_sheet.max_column
for col in range(begin,max_column+1,step):
row_data.append(work_sheet.cell(row=row,column=col).value)
return row_data
#获取指定sheet的指定列的数据,支持取值起始位置和跳跃步长取值
def get_column_data(work_sheet,column,begin=2,step=1):
column_data = []
max_row = work_sheet.max_row
for r in range(begin,max_row+1,step):
column_data.append(work_sheet.cell(row=r,column=column).value)
return column_data
# 获取sheet的表头(列名)
def get_tile(work_sheet):
return get_row_data(work_sheet,1)
# 在指定行插入一行数据,默认插入末尾
def insert_row_data(work_sheet,rowdata,index=-1):
if(index == -1 or index == work_sheet.max_row+1):
work_sheet.append(rowdata)
else:
work_sheet.insert_rows(index)
for col in range(1,work_sheet.max_column+1):
work_sheet.cell(row = index,column=col,value=rowdata[col-1])
# 搜索指定列中包含关键词的所有行数据
def search_info_by_column(work_sheet,column,key):
column_data = get_column_data(work_sheet,column)
print(column_data)
info = []
count = column_data.count(key)
if (count >= 1):
for i in range(len(column_data)):
if (column_data[i]==key):
info.append(get_row_data(work_sheet, i + 2))
return info
if __name__ == '__main__':
wb,ws1 = get_sheet('data.xlsx','Sheet1')
scale = get_sheet_scale(ws1)
#print(get_column_data(ws1,2))
print(search_info_by_column(ws1,3,'赵庆'))
# print(get_column_data(ws1,column=1,begin=2,step=2))
#rowdata = ['414001','湖南省长沙市','李四','先生']
# insert_row_data(ws1,rowdata)
# print(get_tile(ws1))
#wb.save('data.xlsx')
测试表格数据源data.xlsx:
邮编 收信人地址 收信人姓名 称谓
475443 北京市海淀区186号 王霞 女士
461400 太康县中心小学 赵龙 先生
464100 河南郑州二七路33号 王凤 女士
100081 北京市海淀区学院路88号 赵庆 先生
Python操作Excel表格第二弹已更新