python自動化-excelファイルの操作-openpyxlモジュール

15520 ワード

python操作excelファイル–openpyxlモジュール
前言
自動化されたテスト作業では、テスト効率を向上させ、使用例の可読性を向上させ、コードメンテナンスコストを削減するために、通常、テスト使用例とテストデータを分離し、excelはデータを格納するのに最適なファイルであるため、pythonスクリプトでexcelファイルを読み取りまたは書き込む必要があります.openpyxlモジュールの一般的な操作について説明します.間違いやアドバイスがあれば、訂正して指摘してください.
Openpyxlモジュールの使用
Openpyxlモジュールのインストール
  • インストールコマンド:pip install openpyxl、モジュールインポートに成功するとpyファイルで
  • を参照できます.
  • from openpyxl import load_workbook	#   load_workbook  
    

  • workbook三剣客(ワークブック、sheet、セル)の作成
  • wb = load_workbook("testcase.xlsx")  #      excel  ,  workbook  
    ws = wb["test"]    #      sheet ,  sheet  
    cell = ws.cell(row=1, column=1)    #   cell   ,  cell  (            )
    

  • workbook三剣客の常用方法
  • workbook
  • 指定されたシートを開く
    wb["test"]	# test sheet    
    
  • ワークシート作成
    wb.create_sheet(title="test", index=1)	#       “test”    ,       
    
  • EXCELファイルの修正内容
    wb.save("test.xlsx")
    
  • を保存する
  • EXCELファイル
    wb.close()
    
  • を閉じる
  • worksheet
  • ワークシートの最大行番号と列番号
    print(ws.max_row, ws.max_column)
    
  • を取得
  • ある行、ある列のcellオブジェクト
    ws[1]	#        
    ws["A"]   #        
    
  • を取得することができる.
  • 座標(excelの行、列)に基づいてcellオブジェクト
    ws.cell(row=1, column=1)
    ws["A1"]
    
  • を正確に取得できる.
  • セル書込み値
    ws.cell(row=1, column=1, value="test")	#              "test"   
    wb.save("test.xlsx")	#   excel       excel  
    
  • ある範囲の値
    ws.iter_rows(min_row=1, max_row=2, min_col=2, max_col=4, values_only=True)	#          ,         ,values_only=True         ,   cell.value
    
  • を取得する.
  • cell
  • 以上で取得するセルオブジェクトから取得するセルの値
    cell.value	#          
    
  • .

    パッケージexcelの操作(読み取り、書き込み)
    class OperationExcel:
        """
             
        """
    
        def __init__(self, excel_name, sheet_name=None):
            """
                ,       
            :param excel_name: excel  
            :param sheet_name:     
            """
            self.excel_name = excel_name
            self.sheet_name = sheet_name
            self.actual = OperationConfig("EXCEL", "actual").get_int_value()    #        actual    
            self.result = OperationConfig("EXCEL", "result").get_int_value()    #        result    
    
        def get_data(self):
            """
                  
            :return:     
            """
            wb = load_workbook(self.excel_name)    #   workbook  
            if self.sheet_name is None:    #   sheetname  ,       sheet,       sheet
                ws = wb.active
            else:
                ws =wb[self.sheet_name]
            header_data = tuple(ws.iter_rows(max_row=1, values_only=True))[0]   #         ,    
            other_data = tuple(ws.iter_rows(min_row=2, values_only=True))   #         ,    
            test_data = []
            for data in other_data:    #           ,         
                data_dict = dict(zip(header_data, data))
                test_data.append(data_dict)
            return test_data
    
        def get_row_data(self, row):
            """
                    
            :param row:   
            :return:       
            """
            return self.get_data()[row-1]
    
        def write_data(self, row, actual, result):
            """
                 excel
            :param row:   
            :param actual:    
            :param result:    
            :return:
            """
            wb = load_workbook(self.excel_name)
            if self.sheet_name is None:
                ws = wb.active
            else:
                ws = wb[self.sheet_name]
            if isinstance(row, int) and 2 <= row <= ws.max_row:
                ws.cell(row=row, column=self.actual, value=actual)
                ws.cell(row=row, column=self.result, value=result)
                wb.save(self.excel_name)
            else:
                print("       ,    1    ")
    

    まとめ
    Openpyxlモジュールはexcelの読み書き、セルのマージ、画像の挿入など多くの操作を提供し、よく使われるのは読み取りと書き込みです.
  • の読み取り方は、セル読み取り、単行読み取り、単列読み取り、範囲内読み取りが可能なものが多い
  • .
  • 書き込みセルは現在、単一のセルのみ書き込み可能であり、複数行の複数列を書き込みたい場合はforループに合わせて使用できます.