创建表时,Excel会自动为所有列创建筛选器
然后在我的Python+openpyxl代码中,我想过滤掉一些数据,但是我不知道如何检索和更改现有的过滤器
考虑我的表可能有“Fail”、“Pass”、“Skipped”和空值 我只想看到“失败”和“通过”
如果我尝试向表中添加一个筛选器,它似乎会被忽略:
ws.auto_filter.add_filter_column(1,
["Fail", "Pass"])
随后添加一组数据,并相应地更新表“ref”。 不过,在Excel中打开文件时,会显示所有选定的筛选值—根本不进行筛选
有什么线索吗? 谢谢
更新:
我注意到table对象有自己的autoFilter
字段,所以我认为创建一个AutoFilter
并相应地设置它是公平的。
它看起来会成功,但当保存我的文件时,这个过滤器丢失了
我往下看,发现openpyxl/worksheet/_writer.py
的write_tables(self)
正在呼叫table._initialise_columns()
,它把我的过滤器弄坏了
好的,所以我也需要初始化我的table.tableColumns
属性,一开始的简单任务变成了隐藏在函数initialise_columns()
和initialise_filters()
中的许多锅炉板
table = Table(displayName=table_name,
ref=ref_range,
tableColumns=initialise_columns(),
autoFilter=initialise_filters(),
**kwargs)
ws.add_table(table)
更改表数据后,我现在必须更新两个引用:
table .ref = ref
table .autoFilter.ref = ref
好吧,那它“几乎”起作用了。。。 我可以打开文件与Excel没有错误,过滤器出现,我有过滤器值按预期选择,但数据没有得到过滤
如果单击筛选值(即使在此之后所选项目相同),则Excel将应用筛选,结果与预期一致
目前没有回答
相关问题 更多 >
编程相关推荐