最近業務でエクセル処理をPythonで自動化しようとしていたのですが、エクセルの関数がうまく反映されず少しハマったので調べたことをメモしておきます。
# インストール $ pip install openpyxl
PythonのOpenPyXLで「Excelの数式」を読み込む
import openpyxl excel_file_path = "sample-1.xlsx" # 読み込むExcelファイルのPATH(適宜変更) book = openpyxl.load_workbook(excel_file_path,data_only=False) # Excelファイルの読み込み print(book["Sheet"]["A3"].value) # 数式を表示 print("PythonのOpenPyXLで数式を読み込みできました。")
肝はload_workbook()
の引数のdata_onlyでこれをFalseとすることで、これでエクセル関数が文字列として読み込まれます。Trueだと計算結果の情報しか取得できません。
数式の計算結果を取得できないとき
ただOpenpylだとSUM()やIF()などの関数が使われている式はNoneが返ってきます。これはOpenxyplの仕様で関数の計算結果の数値を取得するためにはxlwingsという別のエクセルを読み込むライブラリを使うしかないみたいです。
PythonのOpenPyXLで「Excelの数式」を書き込む
書き込みは数字の時と同じで数式を文字列として指定してあげるだけでOKです。
# 数式を書き込む book["Sheet"]["A3"].value = 'SUM(A1:A10)' #結果を保存 book.save(excel_file_path)
コメント
[…] 関連記事:【Python】openpyxlで「Excelの数式」の読み込み・書き込み […]