zoukankan      html  css  js  c++  java
  • Python使用openpyxl操作excel表格

    前言

    本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

    PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

    http://note.youdao.com/noteshare?id=3054cce4add8a909e784ad934f956cef

    一、openpyxl的使用

    pip install openpyxl

    第一步:打开工作簿(读取Excel文件中所有的数据保存为工作簿对象)

    workbook = openpyxl.load_workbook('cases.xlsx')

    第二步:选中表单对象

    sheet = workbook['login']

    第三步:通过表单选中表格读取数据

    ①读取内容(第五行第四列)

    1 data = sheet.cell(row=5,column=4)
    2 printa(data.value) # 获取内容用value方法

    ②写入内容(保存才会生效)

    1 sheet.cell(row=7,column=3,value='("Python","123456")')
    2 # 写入内容后,一定要保存才会生效
    3 workbook.save('cases.xlsx')

    ③获取最大行和最大列

    # 最大行
    sheet.max_row
    # 最大列
    sheet.max_column

    ④按行获取所有的格子对象,每一行格子放入一个元组中

    sheet.rows

    注意点:不要随便在表格中敲空格

    二、openpyxl的封装

    导包

    import openpyxl

    封装

     1 class ReadExcel(object):
     2     """操作Excl文件"""
     3 
     4     def __init__(self, fileName, sheetName):
     5         """
     6         初始化方法
     7         :param fileName: Excel文件名
     8         :param sheetName: 表单名
     9         """
    10         self.fileName = fileName
    11         self.sheetName = sheetName
    12 
    13     def open(self):
    14         """打开工作簿,选中表单"""
    15         self.wb = openpyxl.load_workbook(self.fileName)
    16         self.sh = self.wb[self.sheetName]
    17 
    18     def save(self):
    19         """保存工作簿对象的方法"""
    20         self.wb.save(self.fileName)
    21         self.wb.close()  # 这一行加不加关系不大,加了可以释放内存

    1、读取数据

    ①将每条数据存储成字典类型

     1     def read_data_dict(self):
     2         """读取数据(将每条数据存储成字典类型)"""
     3         # 打开工作簿
     4         self.open()
     5         # 通过rows获取Excel文件中所有的行数据,然后把数据转成列表
     6         rows = list(self.sh.rows)
     7         # 表头
     8         title = []
     9         # 遍历Excel文件中的第一行表头信息
    10         for i in rows[0]:
    11             title.append(i.value)
    12         # 用例数据列表
    13         cases = []
    14         # 遍历用例数据行
    15         for row in rows[1:]:
    16             # 定义一个列表存放每一行的数据
    17             data = []
    18             # 遍历每一行的数据
    19             for r in row:
    20                 data.append(r.value)
    21             # 把每一行的数据通过zip进行打包,然后转成字典,存入到用例数据列表中
    22             case = dict(zip(title, data))
    23             cases.append(case)
    24         return cases

    ②将每条数据存储成CaseData类对象类型

     1 class CaseData(object):
     2     """保存用例数据类"""
     3     pass
     4     def read_data_obj(self):
     5         """读取数据(将数据保存到CaseData类中)"""
     6         self.open()
     7         rows = list(self.sh.rows)
     8         # 表头
     9         title = []
    10         # 遍历Excel文件中的第一行表头信息
    11         for i in rows[0]:
    12             title.append(i.value)
    13         # 定义用例列表,用来存放用例类列表
    14         cases = []
    15         # 遍历用例数据行
    16         for row in rows[1:]:
    17             # 定义一个列表存放每一行的数据
    18             data = []
    19             # 遍历每一行的数据
    20             for r in row:
    21                 data.append(r.value)
    22             # 把每一行的数据通过zip进行打包,然后转成字典,存入到用例数据列表中
    23             case = dict(zip(title, data))
    24             # 定义一个用例存放类对象
    25             case_obj = CaseData()
    26             for k, v in case.items():
    27                 # 通过setattr()给对象添加属性
    28                 setattr(case_obj, k, v)
    29             # 把对象添加到列表中
    30             cases.append(case_obj)
    31         return cases

    2、写入数据

     1     def write_data(self, row, column, value):
     2         """
     3         写入数据
     4         :param row: 行
     5         :param column: 列
     6         :param value: 数据
     7         """
     8         self.open()
     9         # 指定行列进行写入数据
    10         self.sh.cell(row=row, column=column, value=value)
    11         # 保存
    12         self.wb.save(self.fileName)
    13         # 关闭
    14         self.wb.close()
  • 相关阅读:
    Web调试利器OpenWindow
    Caused by: java.lang.UnsatisfiedLinkError: Couldn't load BaiduMapVOS_v2_1_3: findLibrary returned nu
    exp
    paip.语义分析--分词--常见的单音节字词 2_deDuli 单字词 774个
    怎么计算Oracle的表一条记录占用空间的大小
    爱上WPF,努力才会有希望!
    大数据时代,你准备好了吗?
    将科学记数法的数字转换为字符串
    SQL Server安装
    AJAX
  • 原文地址:https://www.cnblogs.com/Qqun821460695/p/12072887.html
Copyright © 2011-2022 走看看