見出し画像

data_only=Trueとしても式の入っているセルの値がnoneになる場合 #python

date_only = Trueとしても、セルの中身がnoneと出てしまう場合に関して調べた。日本語では探しきれなかったので以下参考にした。

質問内容

上記の通り、data_only=Trueとして読み取ってもA3のセルの内容はnoneとなってしまい(本来300と出るべき)、data_only = Trueを書かない場合は '=SUM(A1:A2)'と式のまま出てしまうとのこと。

回答

data_only=Trueは、Excelのようなアプリケーションによってキャッシュされた数式の値に依存する。しかし、ファイルがopenpyxlまたは類似のライブラリによって作成された場合、数式は評価されなかった可能性が高いので、キャッシュされた値は利用できず、openpyxlは値としてNoneと出力する。

つまり、元データがExcelのようなアプリケーションで作ったものなら値が出力されるが、openpyxlなどで作成されたファイル(たとえそれが .xlsxだとしても)では None と返される。

さらにこれを受けて以下のコメントがある。

上記の回答を読んだDavidは、openpyxlまはた類似のライブラリで作成された読み取りしたいファイルをエクセルで一度開き、式をコピペし、それをopenpyxl、data_only = Trueで開きなおしたら値が出たと言っている。

openpyxlまはた類似のライブラリで作成された読み取りしたいファイルをエクセルで一度開き、式をコピペし、それをopenpyxl、data_only = Trueで開きなおしたら解決した。

この記事が気に入ったらサポートをしてみませんか?