おいしく複雑なマクロとサードパーティの拡張機能を使用して複雑なモデルを作成するさまざまなスプレッドシートがあります。私は、さまざまな入力を少し調整して結果を確認するプロジェクトに取り組んでいます。これを手動で行ったりVBAを書いたりするのではなく、これを駆動するpythonスクリプトを記述できるかどうかを確認したいと思います。つまり、python =スクリプトが起動し、Excelシートをロードしてから、一部のセルに小さな変更を加えて、他のセルにどのように影響するかを確認することにより、シートを操作します。
したがって、私の質問は2つあります。
このような方法でpythonからExcelを駆動するために使用する最適なライブラリは何ですか?
このライブラリの使用に関する最良のドキュメント/例はどこですか?
乾杯、/ YGA
Excelを制御するには、@ igowenが示唆するように、pywin32を使用します。
静的ディスパッチを使用できることに注意してください。使用する makepy.py
pythonモジュールをpythonラッパーで作成します。生成されたラッパーを使用すると、開発が簡素化されます。たとえば、ipythonではタブ補完と開発中に役立ちます。
静的ディスパッチの例:
x:> makepy.py "Microsoft Excel 11.0 Object Library" ... Generating ... Importing module x:> ipython
> from win32com.client import Dispatch
> Excel = Dispatch("Excel.Application")
> wb = Excel.Workbooks.Append()
> range = wb.Sheets[0].Range("A1")
> range.[Press Tab]
range.Activate range.Merge
range.AddComment range.NavigateArrow
range.AdvancedFilter range.NoteText
...
range.GetOffset range.__repr__
range.GetResize range.__setattr__
range.GetValue range.__str__
range.Get_Default range.__unicode__
range.GoalSeek range._get_good_object_
range.Group range._get_good_single_object_
range.Insert range._oleobj_
range.InsertIndent range._prop_map_get_
range.Item range._prop_map_put_
range.Justify range.coclass_clsid
range.ListNames range.__class__
> range.Value = 32
...
ドキュメントリンク:
pywin32 を使用してこれを実行しました。実際に抽象化は行われないため、特に楽しい経験ではありません。 VBAを使用するようなものですが、python構文を使用します。docstringに依存することはできないため、MSDN Excelリファレンスを手元に置いておくと便利です( http:// msdn。 Microsoft.com/en-us/library/aa220733.aspx は、私が正しく覚えていれば使用したものです。少し掘り下げると、Excel 2007のドキュメントを見つけることができるはずです。
簡単な例については、 here をご覧ください。
from win32com.client import Dispatch
xlApp = Dispatch("Excel.Application")
xlApp.Visible = 1
xlApp.Workbooks.Add()
xlApp.ActiveSheet.Cells(1,1).Value = 'Python Rules!'
xlApp.ActiveWorkbook.ActiveSheet.Cells(1,2).Value = 'Python Rules 2!'
xlApp.ActiveWorkbook.Close(SaveChanges=0) # see note 1
xlApp.Quit()
xlApp.Visible = 0 # see note 2
del xlApp
幸運を!
DataNitro プロジェクト(以前の名前IronSpread)を確認してください。 Python Excel用プラグインです。
私は昨年Python Excelプラグインとして書かれたクライアントを含むホームプロジェクトに取り組みました。このプロジェクトは本質的にエンドユーザーアクセス用に簡素化されたオンラインデータベースです。Excelプラグインによりユーザーは、データベースからデータをクエリして、Excelに表示します。
私はExcelプラグインを使ったことがありませんでした。そのためのコードは少しbitいです。しかし、私が持っているのはBSDライセンスの下にあり、Bazaarから入手可能です。
http://www.launchpad.net/analyz/trunk
私は現在公開サーバーを実行していないため、クライアントは動作しませんが、少なくともこのコードで何をしたかを見て、これがどのように機能するかを理解することができます。このコードは、100%PythonでMFCダイアログを作成する方法も示します。
約1週間を費やしましたが、ここに実装(または概念実証)を示します。 https://github.com/Winand/SimplePython
主なアイデアは、PythonコードをMicrosoft OfficeからVBAマクロと同じくらい簡単に記述および呼び出すことができるようにすることです(アドインはExcel専用です)。
python WindowsのCOMインターフェイス経由でExcelを操作できるクラス http://sourceforge.net/projects/excelcomforpython/
このクラスはwin32comを使用してExcelと対話します。クラスを直接使用することも、例として使用することもできます。配列数式、条件付き書式設定、チャートなどのように実装された多くのオプション.
pythonをインプロセスとしてExcelに統合するための興味深いプロジェクトがありますDLL
http://opentradingsystem.com/PythonForExcel/main.html
同じ考えに沿ったもう少しシンプルなプロジェクトが次の場所にあります。
http://www.codeproject.com/Articles/639887/Calling-Python-code-from-Excel-with-ExcelPython
これらのプロジェクトには多くの見込みがあるようですが、さらに開発が必要です。