openpyxlでセルの値を取得する際にハマったことについて簡単にまとめてみました。
- 動作環境
- Windows 10
- python 3.9.13
- openpyxl 3.1.2
やりたいこと
- openpyxlでxlsxファイルのセルの値(数式ではなく計算結果)を取得したい
例えば、以下のようなシートがあって、A1とB1に数値が入っていて、C1ではSUM関数を使ってA1とB1の合計を出力するとします。
ハマったこと
通常以下のようにworkbookとsheetを読み込みます。
import openpyxl
wb = openpyxl.load_workbook("sample.xlsx")
sheet1 = wb["Sheet1"]
以下のようにC1セルの値を取得できます。ただこれだとセルに数式が入っている場合、計算結果ではなくそのまま数式を取得することになります。
c1 = sheet1["C1"].value
print(c1)
=SUM(A1, B1)
解決方法
計算結果のみを取得したい場合は、workbook読み込む際にdata_only=True
と指定します。(デフォルトではFalse)
wb = openpyxl.load_workbook("sample.xlsx", data_only=True)
もう一度c1の値(計算結果)を取得してみます。
import openpyxl
wb = openpyxl.load_workbook("sample.xlsx", data_only=True)
sheet1 = wb["Sheet1"]
c1 = sheet1["C1"].value
print(c1)
2
これで数式ではなく計算結果を取得できました。