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() を参照。

  1. 戻り値の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)))
  1. 動的配列:

注釈

もし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 で追加.