Insider[解決!Python]OpenPyXLを使ってExcelファイルを読み書きするには:解決!Pythonopenpyxlパッケージを使って、Excelのワークブックの作成/読み込み/保存やワークシートの作成、セルの値の読み取り/書き込みなどを行う方法を紹介する。Insider編集部]この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。3.12.1で動作確認したものです(確認日:2024年1月8日)。ws['A1':'C2'])wb.save('myworkbook.xlsx')OpenPyXLの基本的な使い方OpenPyXLは、PythonでExcelファイルを読み書きするためのライブラリであり、PyPIで配布されている。本稿では、これを使用してExcelファイルを読み書きする方法の基本を紹介する。openpyxl」コマンドなどを実行してopenpyxlパッケージをインストールしておく必要がある。openpyxlパッケージが提供するWorkbookクラスを使用すると、メモリ内に新規にExcelのワークブックを作成できる。作成したワークブックはsaveメソッドでExcelファイルとして保存可能だ。Workbook()wb.save('myworkbook.xlsx')注意する点としては、saveメソッドを呼び出すと、指定した名前のファイルが既に存在していた場合には、それが上書きされる点だ。このパッケージが提供するload_workbook関数を使うと、既存のExcelファイルを読み込める。load_workbook('myworkbook.xlsx')ワークブックはワークシートなどを格納するコンテナとして機能する。新規に作成したWorkbookクラスのインスタンスには「Sheet」という名前のワークシートが格納されている。これをPythonで操作する対象として選択するには、大きく2つの方法がある。1つは「ワークブック[ワークシート名]」のようにワークシート名を指定する方法で、もう1つは「ワークブック.active」として現在アクティブなワークシートを選択する方法だ。Sheet既に述べた通り、新規に作成したワークブックにあるワークシートは「Sheet」だけである。よって、上のコードは同じワークシートを選択することになる。ワークシートにはさまざまな属性やメソッドがあるが、title属性を介してワークシートの名前を取得したり、設定したりできる。上のコードではワークシート名を表示している。ワークシートの作成と列挙ワークブックはワークシートなどを格納するコンテナであり、表形式のデータを格納するのは上のコードで選択したワークシートである。ワークシートは、Workbookクラスのcreate_sheetメソッドを呼び出すことで、現在のワークブックに新規に作成できる。sheet')この例では、create_sheetメソッドに同じシート名を指定しているが、重複した名前を指定した場合には「1」「2」などのインデックスが自動的に付加される。ワークブックに含まれるワークシートはワークブックオブジェクトを反復することで得られる。反復しながら、上で述べたインデックスが自動的に付加されているかを調べてみよう。wb.worksheets:」としてもよい。sheet」で、残る2つのワークシートには「1」「2」のインデックスが付加されていることが分かる。セルに対する値の書き込みと読み込みワークシート内のセルにはExcelと同様に行と列を指定することでアクセスできる。Python'」として、そのセルの値を表示する例だ。Pythonwb.save('myworkbook.xlsx')特定のセルの値を読み出すにはvalue属性を利用することには注意すること。Python'」のように書くこともできる。最後のsaveメソッド呼び出しでこのワークブックを保存し、それをExcelでオープンしたものを以下に示す。PythonからExcelファイルに書き込まれたメッセージ加えて、cellメソッドに行と列(と値)を指定して、そのセルを取得して、値を読み出したり、そのセルの値を設定したりできる。2最初の2行では、cellメソッドでセルを取得した後に、value属性に新しい値を代入し、その値をvalue属性経由で読み出している。次の行ではcellメソッドのvalue引数に新しい値を指定している。cellメソッドをforループと組み合わせることで、連続する範囲のセルの値を便利に読み書きできる。value=-idx)wb.save('myworkbook.xlsx')この例では、セルA1〜C1とセルA2〜C2に値を書き込んでいる。保存したワークブックをExcelで開いたものを以下に示す。cellメソッドでセルに値を書き込んだところなお、行と列を指定したり、cellメソッドを呼び出したりした際にそれまで存在していなかったセルにアクセスすると、そのセルがメモリ中のワークブックに作成される。設定を有効にする必要があります。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。