当我用openpyxl创建一个表时,它默认会在所有列上添加一个自动过滤器。使用documentation中提供的示例可以重现这种行为。我希望显示没有自动过滤器的表。
这个行为是由类openpyxl.worksheet.table.Table
中的autoFilter
参数控制的。我尝试过将它设置为None
,以及类openpyxl.worksheet.filters.AutoFilter
中的filterColumn
参数的不同值,但是似乎没有任何效果。
有人能关掉自动过滤器吗?
当我用openpyxl创建一个表时,它默认会在所有列上添加一个自动过滤器。使用documentation中提供的示例可以重现这种行为。我希望显示没有自动过滤器的表。
这个行为是由类openpyxl.worksheet.table.Table
中的autoFilter
参数控制的。我尝试过将它设置为None
,以及类openpyxl.worksheet.filters.AutoFilter
中的filterColumn
参数的不同值,但是似乎没有任何效果。
有人能关掉自动过滤器吗?
3条答案
按热度按时间qnzebej01#
这对我很有效:
ws2.auto排序条件(无)
ws2是我的工作表的名称,我希望这能有所帮助。
ctzwtxfj2#
参考https://stackoverflow.com/a/66377091
f4t66c6m3#
据我所知,
TableColumn
是在xlsx写入(_initialise_columns())时创建的。文档提到可以调用此私有方法来初始化。
但是,文档没有提到如何使用
Table
的AutoFilter
属性。通过检查已加载的excel文件(过滤器已关闭),我修改了用于在
WorksheetWriter.write_tables
中准备表的代码,以创建一个手动关闭表中过滤器的函数。这似乎对我有用。但是,如果您手动设置这样的列,xlsx编写器完成的一些关系将不会创建。我对excel XML结构了解不够,不知道这是否重要。我没有看到我的文件有任何问题,但只是提醒您,以防您看到奇怪的行为。