【openpyxl】数式ではなく値のみ取得する方法【Python初心者向け】

スポンサードリンク
Python
過去の自分
過去の自分

openpyxlでエクセルファイルを編集しているんだけど、
下図のA1セルに入っている「2」を取得したい…。

元データの見本
過去の自分
過去の自分

でもなぜか数式の「=1+1」が取得されてしまう…。
「2」を取得する方法は無いの?

今の自分
今の自分

なるほど…。
では今回は、「openpyxlで数式ではなく値のみ取得する方法」
できるだけわかりやすく解説いたします。

著者情報
スポンサードリンク

openpyxlで数式ではなく値のみ取得する方法

「data_only」を使います。まずは全コードと実行結果をお見せします。
解説は後ほど行います。

全コード

import openpyxl
wb = openpyxl.load_workbook('C:/Utatane/input.xlsx', data_only=True)
ws = wb['Sheet1']
cell = ws['A1'].value
print(cell)
wb = openpyxl.load_workbook('C:/Utatane/input.xlsx', data_only=True)

実行結果

実行結果

事前準備

  • openpyxlのインストール

既存のエクセルファイルを編集するには「openpyxl」のインストールが必要です。

openpyxlのインストール方法

openpyxlを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。

pip install openpyxl

※openpyxlを使用したことがある場合は、このインストール作業は不要です。

インストールに関する詳細や、インストールができなかった場合の対処法は下記記事で解説しております。
また、既存ファイルを開いて保存する方法など、基本解説も行っておりますのでご参考ください。

解説

※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。

import openpyxl
wb = openpyxl.load_workbook('C:/Utatane/input.xlsx', data_only=True)
ws = wb['Sheet1']
cell = ws['A1'].value
print(cell)

今回のコードはとてもシンプルで、以下のような流れです。

  1. インポート
  2. ブック取得(数式を値に変換)
  3. シートを取得
  4. セルの値を取得
  5. 取得した値を表示

注目すべきは2行目の数式を値に変換というところです。
コードでいうと「data_only=True」です。
これを記述することで、シート内の数式を値に変換することができます。

data_only=Trueを記述した際のイメージ

1~3行目の基礎的な解説は、「インストール方法」の記事をご参考ください。

4行目でセルの値を取得しています。

cell = ws['A1'].value

2行目で「data_only=True」を記述していなければ、「cell」には「=1+1」が入ります。
今回は、「data_only=True」で数式を値に変換済ですので、「cell」には「2」が入るわけです。

「.value」を記述しないと、「cell」には「シート名」や「セル名」など値以外の情報も入ります。

「.value」を記述しなかった場合の結果見本

「.value」を記述することで、値のみを「cell」に代入しています。
しかしながら、「.value」を記述しても、2行目で「data_only=True」を記述していないと、やはり「=1+1」が取得されますので、ご注意ください。

data_only=Trueを記述しなかった場合の結果見本
スポンサードリンク

うまく動作しない場合の対処法

エラーが出る

No such file or directory: ○○

これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。

詳しい解説は、下記記事をご参考ください。

Permission denied: ○○

操作しようとしているファイルにアクセスできないというエラーです。
ファイルを開いている状態なので編集できない」と言っていることが多いので、開いていれば閉じて再度トライしましょう。

詳しい解説は、下記記事をご参考ください。

Worksheet ○○ does not exist

「指定したシートがありません」というエラーです。
指定のシート名が間違っていないか、「sheet1」など先頭が小文字になっていないか確認しましょう。

詳しい解説は、下記記事をご参考ください。

○○ is not defined

今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。

詳しい解説は、下記記事をご参考ください。

その他のエラー

その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。

スポンサードリンク

最後に

openpyxlで数式ではなく値のみ取得する方法を解説いたしました。

当ブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。

挫折せずにPythonを独学で学習する方法は特におすすめです。

最後までお読みいただき、ありがとうございました。がんばってください!

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