見出し画像

なぜか〜パイソン〜♪ 沼ったこと

PythonのライブラリーにOpenpyxlってのがあります。

そう、エクセルのブックに対し外からあーだ、こーだとちょっかいを出すことができるライブラリーです。

ちょっかいの方法は多岐に渡るのですが、今回のちょっかいはフォルダに入ったN個のエクセルブックを順次読み込み2つの合計値を取り出し別のエクセルブック(以降、集計エクセル)に順々に書き込んでいくというちょっかいを書きました。

合計値は、SUM関数なのでN個のファイルは、「data_only=True」を設定して読み込んであげないといけません。

テストデータでのテストも問題なく終わり実際のN個のエクセルブックでテストを行うと、集計エクセルに数字が書き込まれません。

なんでだろ?とプログラムを色々チェックしてみたけど問題はなさそう。

ただ、合計値のセル場所って固定ではなく合計行の目立たないセルに「koituda1」的な文字入れて背景色と同じ文字色にして見えなくしてて、プログラムはその文字と一致した行のセルの値を持ってくるようにしていたので、もしかしたらこのロジックで問題が起きているのかな?と考えてみたけど、全く問題ない。

で、そのセル値のバリューをPrintで表示させるとNoneになっている。(SUM関数が表示されるのならまだわかるのだが、NoneですよNone!)

で、なんだかんだ今日の午後色々試していたのですが、ハッとした感じでわかったんですよ。グッときましたね〜。

きっかけは、N個あるエクセルブックの中のひとつのブックのセルに数字を入力してあげて更新したらそのブックの数値はちゃんと取り出せることに気づいたのです。

その後は、全てのN個ブックを開いては「Command+S」で更新を繰り返しました。

ちゃんと動くようになりました。

で、思ったのはエクセルの自動更新はやめた方がいいよなぁという事ですかね。
つまり後で調べてわかったのですがリンク設定を解除した場合とかは自動更新だと更新されない状態になるようです。
(それじゃ自動更新って言わないだろ!って思うのですが。。。)

更新されない状態だと「data_only=True」で読み込んだブックのセル値が計算式の時はNoneを返してしまうそうです。

これだけのことに午後の時間をほぼ費やしてしまった。。

ということで次回同様の事で悩まないようにここに書いておこう。




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