Pyvot / Excel
Excelネタが続きますが、今回はPythonを使ったExcel操作です。Excel「ファイル」への読み書きを目的にしたものではなく、開いたままのシートに対してリアルタイムに読み書きするものです。Pythonはソースを見やすいようにパッケージの形にしましたが、コンソールでの操作を想定しています。
コンソール画面でプログラムのテストしたりするときに、標準入力や標準出力をセルでやると面白いかもということで試してみました。WindowsやLinuxなどのコマンドラインでデータの入出力をするときなど、ファイルでもいいのですが、データを部分的に変更したりするとき、この方法は便利です。視覚的にもわかりやすいです。(こんな用途かぎられるかもしれませんが・・)
環境 : Python 2.7.3, Excel 2010 / Windows 7
インストール :
http://pytools.codeplex.com/wikipage?title=Pyvot
PTVSからもできるようですが、よくわかりませんでしたので、
https://pypi.python.org/pypi/Pyvot
こちらのサイトから
Pyvot-0.1.2-py2.7.egg
をダウンロードして、easy_install コマンドを使いました。
あとwin32comも必要です。
使い方に関しては、以下の動画がわかりやすかったです。
基本的な機能を使ってみました。
Pythonから書き込んだあと、Excelシートをエディトして(1 -> 10)、Excelから読みこみます。(w.get())
これを踏まえて、ちょっと変わった使い方ですが連続してデータをExcelに送り、グラフを表示してみました。
import xl import threading import time import random def main(): xl.Workbook('xlTest.xlsx') r = range(1,11) for i in range(10): xl.get("A1:A10").set(r) random.shuffle(r) time.sleep(1) if __name__ == '__main__': main()
初期値は以下で、
あとは1秒ごとにランダムに並び順が変化します。
実は、マルチスレッドでデータを変化させ、リアルタイム解析みたいなことができないか、ということをしたかったのですが、Pythonのスレッドの中からxl関数を呼び出すと、エラーになってしまいました。また前提条件として、プログラム動作中、セルをクリックすると停止します。あと変更対象のセルにはあらかじめデータを入れておく必要があります。
自分が個人的にやりたかったことができないものもありましたが、十分使えるツールだと思います。
また、いろいろと試していきたいと思います。