python--excel操作插件openpyxl


前言

  1. 數據驅動測試的核心就是數據與用例分離
  2. 數據保存可以使用 Excel,txt,數據庫,html 等各種類型的文件
  3. .txt 文件操作使用內置的open()函數即可,操作可見文件操作
  4. 本篇博客介紹使用第三方插件 openpyxl 讀取並操作 Excel 文件

安裝插件

pip install openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple

步驟

  1. 打開工作簿: 使用 load_workbook(file_path) ,file_path 必須存在,工作簿的后綴必須是 .xlsx 結尾
  2. 實例化: 工作簿名['表單名'] 定位Excel中的表單
  3. 獲取值: 使用 WorkSheet.cell(橫坐標, 縱坐標) 定位要操作的元素坐標,使用 .value 獲取到對應坐標的值
  4. 修改值: 使用 WorkSheet.cell(x,y).value='up_value',將對應坐標的值修改為 up_value
  5. 保存: 修改完Excel文件,一定要保存文件:使用 實例對象.save('表單名') 保存文件

示例:

  1. 需求如下:

已有如下內容的excel文件,現要求將每行數據存入字典,key為表頭,所有字典存入一個大列表中.

  1. 代碼如下
#!/usr/bin/env python 
# -*- coding:utf-8 -*-
from openpyxl import load_workbook

class DoExcel:
    # 1)初始化數據參數:
    def __init__(self, file_path, sheet_name):
        '''
        每次調用函數就實例化文件
        :param file_path: excel 文件路徑
        :param sheet_name: 表單名
        '''
        self.wb = load_workbook(file_path)
        self.sheet = self.wb[sheet_name]

    # _get_title 加_類似於私有函數, 只在內部調用
    def _get_title(self):
        '''
        :return: title 獲取表頭 list,作為key
        '''
        title = []
        # sheet.max_column  最大列
        # sheet.cell(1, i).value    循環取出第一行的值,存入列表
        for i in range(1, self.sheet.max_column + 1):
            title.append(self.sheet.cell(1, i).value)
        return title

    def get_finally_data(self):
        '''
        :return: finally_data,list格式
        '''
        title = self._get_title()
        finally_data = []   # 最終數據存入列表
        for j in range(2, self.sheet.max_row+1):    # 控制最大行
            row_data = {}   # 每一行數據存在字典中
            for i in range(1, self.sheet.max_column+1):     # 控制最大列
                row_data[title[i-1]] = self.sheet.cell(j, i).value
                ## 分解::
                # key = title[i-1]  # 獲取key值,注意 i-1
                # value = self.sheet.cell(j, i).value
                # row_data[key] = value
            finally_data.append(row_data)
        return finally_data


if __name__ == '__main__':
    print(DoExcel('test_data.xlsx', 'parameter').get_finally_data())

  1. 執行結果

注意事項

  1. 不要直接在pycharm中新建一個Excel文件!!!
  2. 如果涉及到寫入數據,一定不要打開Excel文件,否則報PermissionError
  3. 文件名一定要帶后綴名,后綴必須是 .xlsx
  4. AttributeError:'WorkSheet' object has no attribute 'save' 表單沒保存的屬性,工作簿有
  5. 文件名大小寫敏感

總結

  1. 上述代碼仍有很多優化空間,如異常處理?回寫數據處理?參數化如何處理等等
  2. 處理excel有很多插件,像python強大的數據分析工具pandas,但學會其中一種,達到你的需求即可.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM