Openpyxl工作表属性`filterMode`似乎无法正常工作

时间:2020-08-02 18:08:29

标签: python excel openpyxl

当我将工作表属性filterMode用于工作表时,将其设置为True时,过滤器不会出现在第一行中,也就是说,我希望右边有一些小按钮在第一行的每一列中,打开包含该列中使用的值的列表。

我确实注意到Excel窗口左下角的文本Filter Mode

这是我测试过的代码:

import openpyxl as xl

s_xl_file = 'c:/temp/test-openpyxl.xlsx'

tu_data = (
    ('Col A', 'Col B'),
    (25, 30),
    (100, 250)
)

wb          =   xl.Workbook()
ws          =   wb.active
ws.title    =   'Test'

for tu_row in tu_data:
    ws.append(tu_row)

ws_props            =   ws.sheet_properties
ws_props.filterMode =   True

wb.save(s_xl_file)

我在这里做错什么吗,还是过滤器模式引用了Excel Data功能区中的过滤器功能以外的其他东西?

版本数据:

  • 操作系统:Windows 10 64位
  • Python:3.8.5,64位
  • Openpyxl:3.0.3
  • Excel:365位MSO(16.0.113001.20266)32位,用于随后打开Excel工作簿。

1 个答案:

答案 0 :(得分:0)

<块引用>

我在这里做错了什么,还是过滤模式指的不是 Excel 数据功能区中的过滤功能?

我犯了同样的错误。 filterMode 指的是别的东西。具体来说,它是一个 flag,指示工作表是否启用了一个或多个自动过滤器或高级过滤器。将其设置为 True 不会为您提供过滤功能。

要为整个工作表启用小过滤按钮,请添加:

ws.auto_filter.ref = ws.dimensions
ws.auto_filter.add_filter_column(0, [])

你可以摆脱这个,因为它什么也没有:

ws_props            =   ws.sheet_properties
ws_props.filterMode =   True

查看文档:{​​{3}}