Pythonでopenpyxlを用いてワークブックに数式を追加し使用する

Pythonでopenpyxlを用いてワークブックに数式を追加し使用してみます。

今回はワークブック内のデータにアクセスし、合計を行い、合計した値を各行の最後の列に書き込んでみます。

なお、今回openpyxlを使用します。このモジュール・ライブラリは、Pythonの標準ライブラリではありませんので、事前にインストールする必要があります。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■新規のワークブックを用意する

今回Pythonでopenpyxlを用いてワークブックに数式を追加し使用してみますが、その前に新規のワークブックを用意します。

今回はGoogleスプレッドシートを用いて、上記のワークブックを作成しました。このシートを「test.xlsx」というxlsx形式のファイルで保存します。

保存後、ファイルをわかりやすいように「C:\Users\user_\test(フォルダパス)」に移動させます。これでセル移動の準備は完了です。

■openpyxlを用いてワークブックに数式を追加し使用する

次に、openpyxlを用いてワークブック内のデータにアクセスし、合計を行い、合計した値を各行の最後の列に書き込むスクリプトを書いていきます。

■コード

from openpyxl import load_workbook

file_path = r'C:\Users\user_\test\test.xlsx'

wb = load_workbook(file_path)

ws = wb.active

ws['D1'] = '合計値'

for row in range(2,5):
    ws[f'D{row}'] = f'=SUM(B{row}:C{row})'

wb.save(file_path)

「from import」でopenpyxlモジュールのload_workbookを呼び出します。その後、file_pathという変数を定義し、その中に今回用意したワークブックが置かれている場所とファイル名を格納します。

格納後、wb変数を定義し、その中でload_workbook()を用います。括弧内には引数,パラメータとして、file_path変数を渡します。

その後、ws変数を定義し、load_workbook()を用いて読み込んだワークブックをactiveの状態にし格納します。

格納後、合計値を各行の最後の列に書き込むために、wb変数に対して角括弧”[ ]”を用いて合計値という列を作ります。

作った後にfor文とrange()を用いて繰り返し処理を行います。ここで行う処理は、各行の数値をSUM()を用いて合計し、合計値の列に出力していくという処理です。

最後に、save()を用います。合計値が出力されたワークブックを保存させるために、括弧内に引数,パラメータとして、file_path変数を渡します。

■実行・検証

このスクリプトを「using_formulas.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。

実行してみると、今回はprint()を用いて合計値出力といった文字列を出力させるような指示は記述しないので、何も出力されません。

何も出力されませんが、ワークブック内に数式を追加し、数値の合計値を求めることができたのかを確認するために、スクリプトを実行後に「test.xlsx」を開いてみます。

開いてみると、今回のスクリプトを実行したことで、ワークブック内に数式を追加し、合計値を出力させることができたことを確認できました。

コメント

タイトルとURLをコピーしました