「python excel 数値 式をデータで取り出す」
という検索キーワードでアクセスがありました。
OpenPyXLを使ってセルのデータを取得したところ、数式の結果ではなく、数式そのものが取得されてしまった方による検索ではないかと想像しています。
引数data_onlyを指定せずOpenPyXLで既存ブックを開くと値ではなく数式が取得される
まずは、どのような現象かを確認しましょう。
Cドライブtempフォルダーのsample.xlsxブック1枚目のワークシートのC1セルに
=A1+B1
のような式を入力しておいて、以下のスクリプトを実行してください。
bk = openpyxl.load_workbook(r'c:\temp\sample.xlsx')
ws = bk.worksheets[0]cel = ws['C1']
print(cel.value)
たとえば、A1セルに「100」、B1セルに「200」が入力されていれば、「=A1+B1」の結果「300」が表示されて良さそうなものですが、そうはなりません。
'=A1+B1'
と表示されます。
「python excel 数値 式をデータで取り出す」
と検索なさった方は、結果の「300」を取得するにはどうすればいいのかを調べていらしたのだと、私は想像しています。
load_workbook()関数の引数data_onlyにTrueを指定
で、どうすればいいかというと、ブックを開くときに引数data_onlyにTrueを指定します。
先ほどのコード
を、
にするということです。
openpyxlx.load_workbook()関数の実体はreaderパッケージのexcel.pyモジュールにあり、以下のように定義されています。
load_workbook( filename, read_only=False, keep_vba=KEEP_VBA, data_only=False, keep_links=True)
とした場合には、
として実行されているため、データではなく数式そのものが取得されるというわけです。
最終更新日時:2023-05-23 09:13
- Newer:Excel VBAでWordの表を選択する
- Older:リストやタプルの確認にpprint.pprint()関数が便利
Home » Python » OpenPyXLの使い方 » OpenPyXLで数式そのものではなく結果を取得するには