Excelファイルを開きシートを取得
wbook = openpyxl.load_workbook('temp.xlsx')
wsheet = wbook.active
解説
すでに存在するExcelファイルを指定して、アクティブになっているシートを取得します。
フィルターの範囲と条件を設定
wsheet.auto_filter.ref = 'A1:C6'
wsheet.auto_filter.add_filter_column(2,words)
解説
auto_filterを使うことでフィルターの範囲(ref)と条件(add_filter_column)を指定します。
この指定の場合、完全一致する単語の複数指定することはできますが、範囲などの条件を指定するとこはできません。その方法についてはまた別途記載します。
上限に該当しない行を非表示
for row in wsheet.iter_rows(min_row=2):
if row[2].value not in words:
wsheet.row_dimensions[row[0].row].hidden = True
解説
openpyxlはOfficeのインストールされていない環境でも動作ができます。
その代償としてExcelないで処理している機能を自分で実装する必要があります。
フィルターでは条件設定はできますが、実際の行は非表示にならないため、自ら設定する必要があります。
今回サンプルで作成したコード
# -*- coding:utf-8 -*-
import openpyxl
wbook = openpyxl.load_workbook('temp.xlsx')
wsheet = wbook.active
words = [u'Aさん',u'Cさん']
wsheet.auto_filter.ref = 'A1:C6'
wsheet.auto_filter.add_filter_column(2,words)
for row in wsheet.iter_rows(min_row=2):
if row[2].value not in words:
wsheet.row_dimensions[row[0].row].hidden = True
wbook.save('temp2.xlsx')
この記事のトラックバック用URL