オートフィルタ

記事
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(空のフィルタ設定)

サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す ココナラコンテンツマーケット ノウハウ記事・テンプレート・デザイン素材はこちら