Python操作Excel表格(一)

时间:2020-9-6 作者:admin

基于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号    赵庆    先生
 

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。