カスタムフィルターの条件を設定
custom = openpyxl.worksheet.filters.CustomFilter(operator='greaterThanOrEqual', val='3')
解説
CustomFilterを使い、条件(今回ではgreaterThanOrEqualなので「以上」)と判定する値(今回は「3」)を設定する。
カスタムフィルター郡を設定
customs = openpyxl.worksheet.filters.CustomFilters(customFilter=[custom])
解説
条件は範囲選択など複数条件の組み合わせの場合もあります。
そのため、先ほど作成したカスタムフィルターをCustomFiltersのリストに設定します。
今回は条件一つだけですが、複数ある場合はリストで設定を行う。
フィルターする列を設定
filterc = openpyxl.worksheet.filters.FilterColumn(colId=0,customFilters=customs)
解説
準備ができたカスタムフィルター郡をどの列に設定するかをFilterColumnで指定します。colIdに列の番号、customFiltersにカスタムフィルター郡を指定します。
該当行を非表示
for row in wsheet.iter_rows(min_row=2):
if row[0].value < 3:
wsheet.row_dimensions[row[0].row].hidden = True
解説
openpyxl ではフィルタ条件の設定をされたまでですので、実際の行は手動で非表示にします。
今回サンプルで作成したコード
# -*- coding:utf-8 -*-
import openpyxl
wbook = openpyxl.load_workbook('temp.xlsx')
wsheet = wbook.active
wsheet.auto_filter.ref = 'A1:C6'
custom = openpyxl.worksheet.filters.CustomFilter(operator='greaterThanOrEqual', val='3')
customs = openpyxl.worksheet.filters.CustomFilters(customFilter=[custom])
filterc = openpyxl.worksheet.filters.FilterColumn(colId=0,customFilters=customs)
wsheet.auto_filter.filterColumn = [filterc]
for row in wsheet.iter_rows(min_row=2):
if row[0].value < 3:
wsheet.row_dimensions[row[0].row].hidden = True
wbook.save('temp3.xlsx')
この記事のトラックバック用URL