オートフィルタ
記事
IT・テクノロジー
フィルタ設定
既存の設定
セル範囲
フィルタ設定 = セル.createFilterDescriptor(False)
フィルタ設定.ContainsHeader = True
※ セル範囲にはヘッダ行を含める
データベースセル範囲
DBセル.ContainsHeader = True
フィルタ設定 = DBセル.FilterDescriptor
※ データベースセル範囲にはヘッダ行を含める
空の設定
セル範囲
空のフィルタ設定 = セル.createFilterDescriptor(True)
空のフィルタ設定.ContainsHeader = True
※ セル範囲にはヘッダ行を含める
フィルタの条件
from com.sun.star.sheet import TableFilterField
条件 = TableFilterField()
フィルタ対象の列番号の入力
条件.Field = 列番号
セル範囲内の 0 から始まる番号
値の入力
数値
条件.IsNumeric = True
条件.NumericValue = float(数値)
文字列
条件.IsNumeric = False
条件.StringValue = str(文字列)
比較演算子の入力
=
from com.sun.star.sheet.FilterOperator import EQUAL
条件.Operator = EQUAL
前の条件とどうつなぐか
条件.Connection
1つ目の条件には不要
or
from com.sun.star.sheet.FilterConnection import OR
条件.Connection = OR
データ型
フィルタ条件
com.sun.star.sheet.TableFilterField
比較演算子
com.sun.star.sheet.FilterOperator.EQUAL
フィルタ条件をつなぐ論理演算子
com.sun.star.sheet.FilterConnection.AND
com.sun.star.sheet.FilterConnection.OR
フィルタを実行
セル範囲
セル.filter(フィルタ設定)
データベースセル範囲
DBセル.refresh()
ex)
条件1つでフィルタを実行
from com.sun.star.sheet import TableFilterField
from com.sun.star.sheet.FilterOperator import EQUAL
フィルタ設定 = セル.createFilterDescriptor(True)
フィルタ設定.ContainsHeader = True
条件のリスト = []
条件 = TableFilterField()
条件.Field = 列番号
条件.Operator = EQUAL
条件.IsNumeric = isinstance(値, (int, float))
if 条件.IsNumeric:
条件.NumericValue = float(値)
else:
条件.StringValue = str(値)
条件のリスト.append(条件)
フィルタ設定.FilterFields = tuple(条件のリスト)
セル.filter(フィルタ設定)
リセット
空のフィルタ設定 = セル.createFilterDescriptor(True)
空のフィルタ設定.ContainsHeader = True
セル.filter(空のフィルタ設定)