Pythonのopenpyxlライブラリを使用してExcelを操作する

25168 ワード

文書ディレクトリ
  • pip install openpyxlライブラリ
  • のインストールを実行
  • 新規Excel、書き込みデータ
  • 以下のコード例
  • Excelのデータを修正する
  • セルの内容を変更
  • 行削除、列削除
  • 文字色、フォント、サイズ
  • 背景色
  • 挿入画像
  • Excel COMインタフェース
  • pip install openpyxlを実行してライブラリをインストール
    import os
    os.system("pip3 install openpyxl")
    

    新しいExcel、データの書き込み
    xlrdはExcelの内容のみを読み込むことができます.新しいExcelを作成してデータを書き込む場合はopenpyxlライブラリを使用します.
    Openpyxlライブラリでは、ファイルを読むことも、ファイルを書くことも、ファイルを変更することもできます.
    ただし、openpyxlライブラリでは、旧バージョンOffice 2003のxls形式のExcelドキュメントはサポートされていません.xls形式のドキュメントを読み書きする場合は、Excelを使用して対応するフォーマット変換を行うことができます.
    次のコードではopenpyxlの基本的な使い方を示します.
    import openpyxl
    
    #    Excel workbook   
    book = openpyxl.Workbook()
    
    #   ,       sheet,  active  
    sh = book.active
    
    #     sheet        
    sh.title = '   '
    
    #    
    book.save('  .xlsx')
    
    #       '   '  sheet,    
    sh1 = book.create_sheet('   -  ')
    
    #     sheet,    
    sh2 = book.create_sheet('   -  ',0)
    
    #     sheet,    2   
    sh3 = book.create_sheet('   2',1)
    
    #        sheet  
    sh = book['   ']
    
    #           
    sh['A1'] = '  '
    
    #         
    print(sh['A1'].value)
    
    #      ,            ,
    #    xlrd   ,   1   
    sh.cell(2,2).value = '    '
    
    #      ,          
    print(sh.cell(1, 1).value)
    
    book.save('  .xlsx')
    

    次のサンプルコード
    辞書に保存されている年齢表の内容をexcelファイルに書き込む
    import openpyxl
    
    name2Age = {
        '  ' :  38,
        '  ' :  27,
        '  ' :  36,
        '  ' :  38,
        '  ' :  39,
        '  ' :  49,
        '  ' :  43,
        '  ' :  23,
    }
    
    #    Excel workbook   
    book = openpyxl.Workbook()
    
    #   ,       sheet,  active  
    sh = book.active
    
    sh.title = '   '
    
    #    
    sh['A1'] =  '  '
    sh['B1'] =  '  '
    
    #    
    row = 2
    
    for name,age in name2Age.items():
        sh.cell(row, 1).value = name
        sh.cell(row, 2).value = age
        row += 1
    
    #    
    book.save('  .xlsx')
    

    Excelのデータの変更
    既存のExcelファイルを変更したい場合はopenpyxlライブラリを使用することもできます.
    セルの内容の変更
    たとえば
    import openpyxl
    
    #    excel   
    wb = openpyxl.load_workbook('income.xlsx')
    
    #   sheet  
    sheet = wb['2017']
    
    sheet['A1'] = '    '
    
    #        ,         
    wb.save('income-1.xlsx')
       、   
    sheet     insert_rows   insert_cols   ,            ,   
    
    import openpyxl
    
    wb = openpyxl.load_workbook('income.xlsx')
    sheet = wb['2018']
    
    #  2      1 
    sheet.insert_rows(2)
    
    #  3      3 
    sheet.insert_rows(3,3)
    
    #  2      1 
    sheet.insert_cols(2)
    
    #  2      3 
    sheet.insert_cols(2,3)
    
    ##        ,         
    wb.save('income-1.xlsx')
    

    行の削除、列の削除
    sheetオブジェクトのdelete_rowsとdelete_colsメソッドは、行と列を挿入するために使用されます.たとえば、
    import openpyxl
    
    wb = openpyxl.load_workbook('income.xlsx')
    sheet = wb['2018']
    
    #  2      1 
    sheet.delete_rows(2)
    
    #  3      3 
    sheet.delete_rows(3,3)
    
    #  2      1 
    sheet.delete_cols(2)
    
    #  3      3 
    sheet.delete_cols(3,3)
    
    ##        ,         
    wb.save('income-1.xlsx')
    

    テキストの色、フォント、サイズ
    セル内のスタイル(色、フォント、サイズ、下線など)はすべてFontオブジェクトによって設定されます.
    import openpyxl
    #  Font     colors     
    from openpyxl.styles import Font,colors
    
    wb = openpyxl.load_workbook('income.xlsx')
    sheet = wb['2018']
    
    #         ,
    sheet['A1'].font = Font(color=colors.RED, #         
                            size=15,    #       
                            bold=True,  #      
                            italic=True, #      
                            name='  ',    #    
                            underline='siingle' #     )
    
    #     RGB       
    sheet['B1'].font = Font(color="981818")
    
    #         ,        3 
    font = Font(color="981818")
    for y in range(1, 100): #   1   100  
        sheet.cell(row=3, column=y).font = font
    
    #         ,        2 
    font = Font(bold=True)
    for x in range(1, 100): #   1   100  
        sheet.cell(row=x, column=2).font = font
    
    wb.save('income-1.xlsx')
    

    背景色
    import openpyxl
    #  Font     colors     
    from openpyxl.styles import PatternFill
    
    wb = openpyxl.load_workbook('income.xlsx')
    sheet = wb['2018']
    
    #           
    sheet['A1'].fill = PatternFill("solid", "E39191")
    
    #         ,        2 
    fill = PatternFill("solid", "E39191")
    for y in range(1, 100): #   1   100  
        sheet.cell(row=2, column=y).fill = fill
    
    wb.save('income-1.xlsx')
    

    画像を挿入
    画像を挿入するコードです
    import openpyxl
    from openpyxl.drawing.image import Image
    
    wb = openpyxl.load_workbook('income.xlsx')
    sheet = wb['2018']
    
    #  1 , 4         
    sheet.add_image(Image('1.png'), 'D1')
    
    ##        ,         
    wb.save('income-1.xlsx')
    

    Excel COMコネクタ
    Windowsプラットフォームでは、ExcelアプリケーションのCOMインタフェースでExcelを操作することもできます.
    この方法はPythonプログラムを使ってExcelアプリで自分で修正することに相当し、もちろん副作用はありません.
    また、Excelの自動印刷やセルのマージなど、特殊な機能も実現できます.
    Excel COMインタフェースを使用するには、まずpywin 32ライブラリをインストールし、コマンドラインウィンドウに次のコマンドを入力します.
    pip install pywin32
    

    例えばこのように修正することができます
    import win32com.client
    excel = win32com.client.Dispatch("Excel.Application")
    
    #excel.Visible = True     #    excel   
    
    #        Excel       
    workbook = excel.Workbooks.Open(r"d:\tmp\income1.xlsx")
    
    #   2017   
    sheet = workbook.Sheets('2017')
    
    #               
    # om  ,     、   1  
    sheet.Cells(1,1).Value="  "
    
    #    
    workbook.Save()
    
    #   Excel  
    workbook.Close()
    
    #excel    
    excel.Quit()
    
    #      
    sheet = None
    book = None
    excel.Quit()
    excel = None
    

    実行してみると、Excelの内容も修正できます.