ExcelでPythonを使ってみる。

ExcelでPythonを使ってみる。

前回のExcelでPythonを動かす。に引き続き、もうちょっと踏み込んでDataNitoを使ってみました。

詳しくは、Microsoft ExcelでPythonのスクリプトを動かせるプラグインDataNitroを参考にしてください。

Pythonをimport

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

Excel 2007を起動すると、さらにメニューにDataNitroが
blog.godo-tys.jp_wp-content_gallery_datanitro_image01.jpg
のように登録されるので、import iconをclickします。

import iconをclickすると、
blog.godo-tys.jp_wp-content_gallery_datanitro_01_image01.jpg
のファイル選択dialogが開くので、水文解析の基本_1 [Chapter 2]のwater_vapor.pyを呼び出します。

そうすると、importされたPython fileが
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から修正して、
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グラフとして出力されます。

実際に実行させてみると、
blog.godo-tys.jp_wp-content_gallery_datanitro_01_image04.jpg
のようにSheet上に計算結果とグラフが作成されます。

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

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

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

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

 

WP-SpamFree by Pole Position Marketing

Social Widgets powered by AB-WebLog.com.