标题已经说明了一切:)
但是,我仍然使用
Table
中的 openpyxl.worksheet.table
类来定义我创建的 Excel 文件中的表格。我的问题是,创建的表格在我想要删除的第一行上有 Filter
(从脚本中,而不是通过打开 Excel 文件)。
这是Table类的调用:
tab = Table(displayName='Table_{}'.format(table_name.replace(' ', '_')),
ref="{}:{}".format(table_start, table_end))
这就是我得到的:
这就是我想要得到的:
我在 OpenPyXL Docs 中搜索它,但发现只添加了该过滤...
有什么办法可以去掉吗?
非常感谢!
wb = load_workbook(filename="data.xlsx")
ws = wb["Sheet1"]
ws.auto_filter.ref = None
for i in range(2, ws.max_row + 1):
ws.row_dimensions[i].hidden = False
wb.save("data.xlsx")
我刚刚遇到了这个问题,这就是我解决它的方法。
#Opens the file
wb = load_workbook(filename = 'somefile')
#Set worksheet
ws = wb['sheetname'] # Tab name
#set table
tbl = ws.tables["tablename"]
#removes all filters
tbl.autoFilter.filterColumn.clear()
文档实际上声称带有标题的表需要“过滤器”。无论如何,一些逆向工程可以帮助我们实现这一目标。我发现 FilterColumn 使用名为
hiddenButton
的属性控制此设置。当它为“无”时,过滤器按钮将显示在所有列上。但是,我们可以在我们选择的任何列上关闭它们,如下所示:
from openpyxl.worksheet.filters import FilterColumn, AutoFilter
# get table
tbl = ws.tables["tablename"]
# set up filter for each column
indexes = [1,2,5]
fc = [FilterColumn(colId=col, hiddenButton=True) for col in indexes]
# set autoFilter on table
table.autoFilter = AutoFilter(ref=table.ref, filterColumn=fc)
设置
hiddenButton = True
将关闭过滤器按钮。如果您正在编写新表,我看不到其他可行的解决方案,因此这应该可以解决该问题。
你好,
tab = Table( displayName='Table_{}'.format(table_name.replace(' ', '_'))
, ref="{}:{}".format(table_start, table_end)
, headerRowCount = 0 # default is 1
)