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ファイルをマニュアルで閉じるのも、なんとなく片手落ちな感じがしますので・・・