Daily Archives: 2013年9月7日

ExcelでPythonを使ってみる。

====== ExcelでPythonを使ってみる。 ======
前回の[[http://blog.godo-tys.jp/2013/09/06/4206/|ExcelでPythonを動かす。]]に引き続き、もうちょっと踏み込んでDataNitoを使ってみました。

詳しくは、[[http://jp.techcrunch.com/2012/08/11/20120810python-for-microsoft-excel-company-ironspread-comes-out-of-beta-changes-name-to-data-nitro/|Microsoft ExcelでPythonのスクリプトを動かせるプラグインDataNitro]]を参考にしてください。

===== Pythonをimport =====
Python fileをimportして実行してみましょう。
DataNitroでは、Pythonを実行させる場合、Python fileをimportする必要があります。

Excel 2007を起動すると、さらにメニューにDataNitroが
{{http://blog.godo-tys.jp/wp-content/gallery/datanitro/image01.jpg}}
のように登録されるので、import iconをclickします。

import iconをclickすると、
{{http://blog.godo-tys.jp/wp-content/gallery/datanitro_01/image01.jpg}}
のファイル選択dialogが開くので、[[http://blog.godo-tys.jp/2013/09/02/4160/|水文解析の基本_1 [Chapter 2]]]のwater_vapor.pyを呼び出します。

そうすると、importされたPython fileが
{{http://blog.godo-tys.jp/wp-content/gallery/datanitro_01/image02.jpg}}
のようにExcelに登録されます。

この状態でrunさせると、通常のpythonの実行と同様にwater_vapor.pyが実行されます。

===== Python fileを修正して実行 =====
せっかくExcel上で作成しているので、計算結果をExcelに書き出してみましょう。
water_vapor.pyをeditorから修正して、
{{http://blog.godo-tys.jp/wp-content/gallery/datanitro_01/image03.jpg}}
のwater_vapor2.pyで名前を付けて保存します。

修正したcodeは、

clear_sheet()
col = 1
for val in es:
Cell(col, 1).value = col
Cell(col, 2).value = val
col += 1

sheet上のデータをすべてclearな状態にします。
次に、計算したesの個数分だけ、cellに書き出していきます。Cellのcolumnとrowの取り扱いは、VBAと同じです。Cellのpropertyいついては、helpを参考にしてください。

グラフ化は、pylabのwrapperでnitroplotが用意されていますので、

plt.plot(T,es)
plt.xlabel('T (degree Celcius)')
plt.ylabel('es (Pa)')
#plt.show()
plt.graph()

のように変更します。 import nitroplot as pltで名前を変更しているので、大きな変更は、グラフの表示をshow()からgraph()に変更したくらいです。
graph()とすることで、sheet上にExcelグラフとして出力されます。

実際に実行させてみると、
{{http://blog.godo-tys.jp/wp-content/gallery/datanitro_01/image04.jpg}}
のようにSheet上に計算結果とグラフが作成されます。

使い方については、[[https://datanitro.com/docs/|documentation]]などを参考にすれば良いかと思います。あまり詳しく書かれていませんが、何となくpropertyやmethodの設定などは察しがつきます。

このDataNitroを使えば、計算結果のcountor作成や、複雑なグラフなど、また計算も、VBAからPython fileを読み込んで実行などが簡単にできます。
何よりも、Excel上で動くのはありがたいですね。

是非、非商用ライセンスを取得して、OSSでみなさんtryしてみてください。