UDF デコレーター#
- xlwings.func(category='xlwings', volatile=False, call_in_wizard=True)#
xlwings.func
でデコレートした関数は、"Import Python UDFs"実行時にExcelのFunction
としてインポートされます。Arguments:
- categoryint or str, default "xlwings"
1から14はビルトイン カテゴリーです。ユーザー定義 カテゴリーは文字列を使ってください。
バージョン 0.10.3 で追加.
- volatilebool, default False
ユーザー定義関数をvolatileとします。volatileな関数はワークシートのいずれかのセルで計算が行われるたびに再計算されます。volatileではない関数は引数が変化したときのみ再計算されます。
バージョン 0.10.3 で追加.
- call_in_wizardbool, default True
Falseを設定すれば、関数ウィザードでの関数呼び出しを抑制します。
バージョン 0.10.3 で追加.
- xlwings.sub()#
xlwings.sub
でデコレートした関数は、"Import Python UDFs"実行時にExcelのSub
(つまりマクロ) としてインポートされます。
- xlwings.arg(arg, convert=None, **options)#
コンバーターおよびオプションを引数に適用します。
Range.options()
を参照。例:
x
を2次元のnumpy arrayに変換します:import xlwings as xw import numpy as np @xw.func @xw.arg('x', np.array, ndim=2) def add_one(x): return x + 1
- xlwings.ret(convert=None, **options)#
コンバーターおよびオプションを戻り値に適用します。
Range.options()
を参照。例
戻り値のDataFrameからインデックスとヘッダーを除去:
import pandas as pd @xw.func @xw.ret(index=False, header=False) def get_dataframe(n, m): return pd.DataFrame(np.arange(n * m).reshape((n, m)))
動的配列:
注釈
もしExcelが新しいネイティブな動的配列に対応済みなら、特別なことはなにもしないでください。そして
expand
デコレーターを使用すべきではありません。Excelが対応しているか調べるには、=UNIQUE()
関数が利用可能かをみてください。ネイティブな動的配列は2018年9月のOffice 365 インサイダー ファストで導入されました。expand='table'
を使えばUDFが動的配列になります。現在のところ、volatileな関数は動的配列の引数に使えません。 例えば、=TODAY()
は動的配列の一部として使えません。また、動的配列は空行や空列が下や右になければなりませんし、既に存在するデータを警告なしで上書きします。通常のExcel配列数式とは異なり、動的配列は通常の関数同様、単独のセルから使用され、戻り値に応じて自動的に拡張されます:
import xlwings as xw import numpy as np @xw.func @xw.ret(expand='table') def dynamic_array(n, m): return np.arange(n * m).reshape((n, m))
バージョン 0.10.0 で追加.