2 个回答
0
下面的代码可以正常工作:
import xlwings as xw
wb = xw.Book('foo.xlsx')
ws = wb.sheets('Sheet1')
def remove_filter():
if ws.api.AutoFilter:
print("yes")
ws.api.AutoFilter.ShowAllData()
return None
1
假设你说的是自动筛选功能,那么在一个工作表上只能有一个自动筛选...
Openpyxl 的用法大概如下就可以了;
import openpyxl
wb = openpyxl.load_workbook('foo.xlsx')
ws = wb['Sheet1']
if ws.auto_filter:
print(f'Sheet has autofilter in range {ws.auto_filter.ref}')
ws.auto_filter.ref = None
wb.save('foo.xlsx')
Xlwings 你可以使用以下代码;
import xlwings as xw
with xw.App(visible=False) as app:
wb = xw.Book('foo.xlsx')
ws = wb.sheets('Sheet1')
if ws.api.AutoFilter:
print(f'Sheet has autofilter in range {ws.api.AutoFilter.Range.Address}')
ws.api.AutoFilterMode = False
wb.save('foo.xlsx')
Win32com 的用法和 Xlwings 类似;
import win32com.client as win32
xl = win32.gencache.EnsureDispatch("Excel.Application")
xl.Visible = False
wb = xl.Workbooks.Open('<path>/foo.xlsx')
ws = wb.Sheets('Sheet1')
print()
if ws.AutoFilterMode:
print(f'Sheet has autofilter in range {ws.AutoFilter.Range.Address}')
ws.AutoFilterMode = False
wb.Save()
# wb.SaveAs('<path>/foo2.xlsx') # Or save as another workbook