Pythonの応用 - PyXLL
概要
PyXLLは、開発者がExcelの機能をPythonコードで拡張できるようにするExcelアドインである。
Pythonを生産的で柔軟なExcelワークシートのバックエンドにして、Excelのユーザインターフェイスを使用して情報インフラの他の部分とやり取りできるようにする。
PyXLLを使用する場合、Pythonディストリビューション (Anaconda、EnthoughtのCanopy、CPython 2.3〜3.10ディストリビューション等) を使用してPythonコードをExcelで実行できる。
PyXLLは独自の完全なPythonディストリビューションを実行するため、NumPy、Pandas、SciPy等の全てのサードパーティのPythonパッケージにアクセスでき、Excelからそれらを呼び出すことができる。
使用例
- 既存のPythonコードを呼び出してExcelで計算を実行する。
- データ処理および分析
- データベース等の外部システムからデータを取り込む
- 大規模なデータセットを照会してExcelでサマリーレベルのデータを表示する。
- Excelユーザに内部ライブラリやサードパーティライブラリを公開する。
デコレータ構文 (@xl_func
等) のシンタックスに対応している必要がある。(Python 2.4以降が必要)
非同期関数のコルーチンシンタックスに対応している必要がある。(Python 3.5.1以降が必要)
※注意 1
Windowsストア経由でインストールされたPythonは使用できないため、Pythonの公式WebサイトからPythonをインストールすることが推奨される。
WindowsストアアプリまたはUWPアプリケーションのインストール方法では、必要なファイルにアクセスできないからである。
※注意 2
Microsoft Excel for Windows 2003が最小サポートバージョンである。
Office 365またはExcel 2016以降が推奨される。
PyXLLの機能の詳細を知りたい場合は、公式ドキュメントを参照すること。
PyXLLの制限事項
WindowsとExcelの互換性
PyXLLはWindows向けに設計されており、Windows上のMicrosoft Excelで動作する。
Windows向けに最適化されているため、Windows以外のプラットフォームでは機能が制限されたり、互換性の問題が発生したりする可能性がある。
Windows for ARM64はサポートされていない。
MacOSとLinuxはサポートされていない。
例えば、Linux上で開発する場合は、KVMでGPUパススルーした仮想マシンでWindowsを実行することが推奨される。
導入
PyXLLを使用したスプレッドシートをエンドユーザに導入する場合は、最小限の依存関係でPythonがインストールされているか、スプレッドシートにバンドルされているPythonランタイムが必要である。
つまり、PyXLLを利用したスプレッドシートを使用するユーザは、Pythonをインストールする必要がある。
学習曲線
PyXLLを効果的に使用する場合、PythonのシンタックスとExcelのオブジェクトモデルに精通していることが必要となる。
PyXLLの料金
年間契約
1ユーザ $299 / 年 (料金には、VAT、GST、売上税は含まれない)
また、マルチユーザライセンスの割引がある。
いつでもユーザを追加することが可能である。
月額契約
1ユーザ $29 / 月 (料金には、VAT、GST、売上税は含まれない)
いつでもキャンセル可能です。
個人ユーザに最適である。
いつでもユーザを追加することが可能である。
PyXLLのインストール
pipコマンドを使用して、PyXLLパッケージをインストールする。
condaまたは仮想環境を使用している場合は、コマンドを実行する前に有効にする必要がある。
pip install pyxll
PyXLLパッケージのインストールが完了した後、PyXLL Excelアドインをダウンロードしてインストールする。
"Do you have a PyXLL license key?"と尋ねられた場合、"n"と入力することにより、30日間の無料試用版が自動的に有効になる。
pyxll install
画面の指示に従ってインストールを完了する。
"Have you already downloaded the PyXLL add-in?"と尋ねられた場合は、"n"と入力すると、インストーラが必要なライブラリを全て自動的にダウンロードする。
必要であれば、PyXLLの公式Webサイトにアクセスして、PyXLLをダウンロードしてインストールする。
上記のWebサイトからダウンロードする場合、使用するPythonとExcelのバージョンを選択すること。
※注意 1
ダウンロードページからPyXLLをダウンロードしている場合は、パスが求められた時にエクスプローラからコマンドプロンプトにZIPファイルをドラッグ&ドロップすることができる。
※注意 2
Pythonはx86版とAMD64版の両方がサポートされているが、アーキテクチャが異なるExcelを混在させることは不可能である。
例えば、MS Office x86とPython AMD64を混在させることはできない。
PyXLLアドインが正常にインストールされた場合、Excelを起動すると自動的にアドインが読み込まれる。
また、PyXLLアドインがインストールされたフォルダには、PyXLLアドインとその設定ファイルと共にいくつかのサンプルが含まれている。
PyXLLアドインのインストールフォルダ
PyXLLをインストールする場所を覚えていない場合は、pyxll status
コマンドを使用して確認する。
または、ExcelのPyXLLメニューの[About]オプションを選択して確認する。
PyXLLのインストールフォルダには、以下に示すファイルがある。
- pyxll.cfg
- PyXLLの構成ファイルであり、独自のPythonモジュールをロードするためにこれを変更する必要がある。
- インストールされた構成ファイルの例には、使用可能な設定のドキュメントが含まれている。
- PyXLLの設定オプションの詳細については、ユーザガイドの[Configuring PyXLL]セクションを参照すること。
- exampleフォルダ内のExcelワークブックの例とコードの例
- このフォルダには、PyXLLアドインの使用方法を理解するために役立つ例がある。
- サンプルは全てデフォルトのPyXLL設定で読み込まれるため、examplesワークブックを開いて試すだけである。
- ログファイル
- デフォルトの設定では、ログファイルのパスはPyXLLドメインのインストールフォルダ内のlogsフォルダに設定されている。
- logsフォルダには、PyXLLのログファイルがあり、Excelのワークシート関数やマクロを実行する時にスローされる例外のPythonスタックトレースの全データを含め、全てのエラーがこのファイルに記録される。
- そのため、問題が発生した場合は、最初にこのファイルを見る必要がある。
- 設定ファイルの[LOG]セクションでvebosity = debugと設定することにより、デバッグロギングを有効にして不具合の詳細を知ることができる。
[LOG] verbosity = debug
PyXLLのサンプル
PyXLLアドインのインストールフォルダに、examples.xlsxというサンプルワークブックが存在する。
このワークブックには、PyXLLの機能の一部を示す例がいくつか含まれている。
独自のモジュール (.pyファイル) を追加する場合は、pyxll.cfgファイルにあるモジュールリストに追加する必要がある。
examplesフォルダだけでなく、他のフォルダにあるモジュールも追加できる。
その場合、pyxll.cfgファイルのpythonpathキーに独自のフォルダのパスを追加する。
独自のPython関数をワークシート関数としてExcelに公開する方法を知りたい場合は、公式ドキュメントのワークシート関数を参照する。
PyXLLの他の機能について知りたい場合は、公式ドキュメントのユーザーガイドを参照する。
エラー
ファイアウォールやプロキシサーバが原因でpipコマンドが使用できない
PyXLLアドインをインストールする場合、pipコマンドおよびpyxll installコマンドを使用する代わりに、手動でダウンロードしてインストールする。
pyxllコマンドが認識されない
pip install pyxllコマンドを実行する時、pyxllコマンドが認識されない場合がある。
これは、Pythonスクリプトフォルダがシステムパス上に存在しないことが原因である。
この時、python -m pyxll install
コマンドおよびpyxll install
コマンドを実行する。
Excelの起動時にpythonXXX.dll not foundエラーが発生する
使用しているPythonのバージョンが、PyXLLアドインがビルドされたPythonのバージョンと異なることが原因である。
コマンドラインインストーラを使用している場合は、PyXLLをダウンロード済みかどうかを尋ねられた時に"n"を入力して、正しいバージョンをダウンロードする。
PyXLLアドインを手動でダウンロードする場合は再度ダウンロードするが、ダウンロードフォームで正しいPythonのバージョンを選択するように注意すること。
その他の問題のトラブルシューティング
エラーが発生した時、PyXLLのログファイル (デフォルトでは、PyXLLのインストールフォルダ下のlogsフォルダ) に書き込まれる。
ログファイルの場所を確認する場合は、pyxll status
コマンドの使用、あるいは、PyXLLメニューの[About]オプションを確認する。
または、PyXLLの公式WebサイトにあるFAQを確認すること。