• python之excel表格操作


    1.openpyxl介绍和安装

    1.1为什么要学习excel

    • 存测试数据

    • 存测试结果

    1.2安装openpyxl

    • python中与excel操作相关的模块

      1.xlrd库:从excel中读取数据,支持xls,xlsx

       2.xlwt库:对excel进行修改操作,不支持对xlsx格式的修改

               3.xlutils库:在xlwt和xlrd中,对一个已存在文件进行修改

               4.openpyxl:主要针对xlsx格式的excel进行读取和编辑

    • 安装方式

      pip install openpyxl

    1.3Excel中的三大对象

    • ​ WorkBook:工作簿对象

    • Sheet:表单对象

    • Cell:表格对象

    2.openyxl对excel的操作

    1.新建文件Excel文件 Workbook方法

    步骤:

    ​ 1.新建工作薄 openpyxl.Workbook()

    ​ 2.保存为xlsx文件


    #创建一个工作薄
    workbook=openpyxl.Workbook()
    #创建一个表单
    workbook.create_sheet("sheet3")
    #将工作薄保存为文件
    workbook.save('test.xlsx')

    注意点:如果保存的文件名存在,将会覆盖原文件

    打开已存在的文件

    ​ load_workbook()

    2.读写数据的方法

    操作流程

    • ​ 打开一个excel文件,或者创建一个excel文件

    • 获取某个表单对象

    • 在表单对象中的单元格(cell)中读、写、修改数据

    相关操作

    • 打开文件,生成工作薄

      ​ wb=openpyxl.load_workbook('test.xlsx')

    • 获取操作的表单

      sh=wb['Sheet']

    • 读取指定表格内的数据


      #读取单元格的数据
      #参数:row:行,column:列
      ce=sh.cell(row=1,column=2)
      print(ce.value)

      #按行读取数据
      columns_data=sh.rows

      #按列读取数据
      columns_data=sh.columns
      print(list(columns_data))
    • 写入数据


    #保存数据
    #参数:row:行,column:列 value 写入值
    sheet.cell(row=1,column=8,value=199)
    workbook.save("test.xlsx")
    • 获取总行数

      max_row=sh.max_row

    • 获取总列数

      max_row=sh.max_column

    • ​ 获取所有的表单

    ​           wb.sheetnames

     

    3.常用功能封装成方法

    class ReadExcel(object):
    """
    读取excel数据
    """

    def __init__(self, file_name, sheet_name):
    """
    这个是用例初始化读取对象的
    :param file_name: 文件名字 --> str
    :param sheet_name: 表单名字 --> str
    """
    self.file_name = file_name
    # 打开工作簿
    self.wb = openpyxl.load_workbook(file_name)
    # 选择表单
    self.sheet = self.wb[sheet_name]

    # def __del__(self):
    # # 关闭工作簿
    # self.wb.close()

    def read_data_obj(self):
    """
    按行读取excel中的数据,以列表的形式返回,列表中每个对象为一条用例
    excel中的表头为对象的属性,对应的数据为属性值
    :return: type:list--->[case_obj1,case_obj2....],
    """
    # 按行获取数据转换成列表
    rows_data = list(self.sheet.rows)
    # 获取表单的表头信息
    titles = []
    for title in rows_data[0]:
    titles.append(title.value)
    # 定义一个空列表用来存储所有的用例
    cases = []
    # 判断是否是读取所有数据
    for case in rows_data[1:]:
    # data用例临时存放用例数据
    data = []
    # 判断该单元格是否为字符串类型,
    for cell in case:
    data.append(cell.value)
    # 将该条数据放入cases中
    case_data = zip(titles, data)
    # 创建一个Case类的对象,用来保存用例数据,
    case_obj = Case(case_data)
    cases.append(case_obj)
    return cases

    def readline_data_obj(self, list1=None):
    """
    按指定的列,读取excel中的数据,以列表的形式返回,列表中每个对象为一条用例
    excel中的表头为对象的属性,对应的数据为属性值
    :param list1: list -->要读取的列[1,2....]
    :return: type:list--->[case_obj1,case_obj2....],
    """
    list1 = eval(list1)
    if len(list1) == 0:
    return self.read_data_obj()

    max_r = self.sheet.max_row
    # 定义一个空列表,用来存放所有用例
    cases = []
    # 定义一个空列表,用来存放表头
    titles = []
    # 遍历出所有的行
    for row in range(1, max_r + 1):
    # 判断是否是第一行
    if row == 1:
    # 遍历list1指定的列,获取表头
    for column in list1:
    title = self.sheet.cell(row, column).value
    # 将数据添加到表头中
    titles.append(title)
    else:
    # 定义一个空列表,用来存放该行的数据
    case_data = []
    for column in list1:
    info = self.sheet.cell(row, column).value
    case_data.append(info)
    # 将该条数据和表头进行打包组合,
    case = list(zip(titles, case_data))
    # 创建一个用例对象,将表头和数据传进入初始化
    case_obj = Case(case)
    cases.append(case_obj)
    return cases

    def write_data(self, row, column, msg):
    # 写入数据
    self.sheet.cell(row=row, column=column, value=msg)
    self.wb.save(self.file_name)
    出处:https://www.cnblogs.com/hn-daxiong/
    欢迎转载,但未经作者同意请保留此段声明,并在文章页面明显位置给出原文链接。
  • 相关阅读:
    ABP 菜单 修改
    C# 过滤器
    RabbitMQ框架构建系列(三)——Net实现RabbitMQ之Producer
    RabbitMQ系列(二)RabbitMQ基础介绍
    RabbitMQ系列(一)AMPQ协议
    MVC 解读WebConfig
    MVC过滤器特性
    asp.net中使用JQueryEasyUI
    asp.net请求到响应的整个过程
    Redis的下载安装部署(Windows)
  • 原文地址:https://www.cnblogs.com/hn-daxiong/p/12846560.html
Copyright © 2020-2023  润新知