Working with Excel files in Pythonista②

1.計算結果が表示できない

 簡単な例で説明します。

A1,B1,C1にデータがデータが入力されていて、D列には、B列,C列のデータを元に計算する式が入力されているとします。

1 10 20 =sum(B1+C1)

D1には上記の式が入力されており、D2,D3,・・・にも同様に「=sum(Bn,Cn)」が入力されていて、その後、B2,C2にデータ入力すると、自動的にD2に計算結果が入力される、というようになっています。

そして、Pythonistaのプログラムから、このExcelファイルを開き、A2,B2,C2へデータを入力するようにしました。

データ入力後は、Excelファイルを一旦セーブします。

そして、計算結果を表示するために、再度Excelファイルを開き、D2セルの値を読み出し表示するようにしました。

式の値を読み込みたいので、ファイルを開く際に、下記のような「data_only=True」オプションを付けています。

「book = openpyxl.load_workbook(‘/Applications/Excel/B_temp.xlsx’,data_only=True)」

しかし、D2セルの値は「None」になってしまいます。

2.原因

原因は簡単なことで、上記のプログラムでは、ExcelファイルをPythonで読み込んだり保存しているだけで、Excelアプリでは一度も開いていませんので、計算式が実行されないためです。

確かに、それはそうでしょう、という感じですが、どう対処していいかがわかりません。

3.対処方法

Excelの関数を計算させるライブラリもあるようですが、それもどうかな、と思います。

元々、「計算はExcelにやらせる」というコンセプトで始まっているわけですから、ライブラリを使って計算させるのは本意ではありません。

ということは、PythonからExcelアプリを起動できればいいのではないかと思います。Excelアプリを起動できれば、計算が実行されるはずで、そのまま保存し、その後、Pythonから「data_only=True」オプションを付けてExcelファイルを読み込めば、値が読み込めると思います。

果たして、PythonからExcelアプリを起動して、Pythonから保存、クローズさせることができるのでしょうか。

その結果を含めてまでを書きたかったのですが、今日のところはここまでにし、明日以降、追加調査してみます。

import subprocess」を使うことで起動はできそうな感じですが、クローズできるか否かが問題です。

開いたExcelファイルをマニュアルで閉じるのも、なんとなく片手落ちな感じがしますので・・・


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Bowling

前の記事

Bowling Score Update 12/6
Bowling

次の記事

Bowling Score Update 12/10