web-dev-qa-db-ja.com

Openpyxl:すべての列にフィルターを追加する方法

ワークシートを開くことができますが、フィルターをオンにせずにすべての列に小さなフィルターメニューを追加するにはどうすればよいですか?

私はxlsxwriterでそれを行うことができます

worksheet.autofilter(0, 0, 0, num_of_col)

Openpyxlでそれを行うにはどうすればよいですか?

7
azazelspeaks

この投稿は私の質問への回答に役立ちましたが、「FullRange」の変数を作成する代わりに、ws.dimensionsを呼び出すだけで、「A1:XX」の範囲の文字列値を返すことができます。これを使用して、Excelスプレッドシート全体にフィルターを適用しました。

import openpyxl as px

wb= px.load_workbook('Data/Test01.xlsx')
ws = wb.active

ws.auto_filter.ref = ws.dimensions

wb.save('Data/Test03.xlsx')
10
Robert Hadsell

worksheet.auto_filter.refをワークシートのセルの全範囲に設定するだけです。

import openpyxl
from openpyxl.utils import get_column_letter

workbook = openpyxl.load_workbook('Data/Test01.xlsx')
worksheet = workbook['Sheet1']

FullRange = "A1:" + get_column_letter(worksheet.max_column) \
+ str(worksheet.max_row)
worksheet.auto_filter.ref = FullRange

workbook.save('Data/Test03.xlsx')
1
G5W

#G5Wによる回答に追加するには、代わりに次を実行できます: '' 'worksheet.auto_filter.ref = "C1:D10000"#CおよびDフィルターのexaple列の場合は' ''

0
sardor mirzaev