Excel pivot table 通过 win32com 在 Python 中过滤

Excel pivot table filter in Python via win32com

我非常努力地寻找如何通过 win32com 在 Python 中执行这些简单的 VBA 代码行,但我找不到如何正确执行它:

ActiveSheet.PivotTables("PivotTable1").PivotFields("Quarters").ClearAllFilters
ActiveSheet.PivotTables("PivotTable1").PivotFields("Effective deadline"). _
    PivotFilters.Add2 Type:=xlBefore, Value1:="10/10/2017"

当运行这些行时:

from win32com.client import DispatchEx

excel = DispatchEx('Excel.Application')
wb = excel.Workbooks.Open('myfile.xlsx')
ws = wb.Worksheets('MySheet')
ws.PivotTables(1).PivotFields("Quarters").PivotFilters('Add2', 'xlBefore', '10/10/2017')

我得到了一个 'Invalid number of parameters' 所以我想我已经很接近了但是找不到文档来完成我的代码

有没有人做过这种工作?

您调用了错误的方法。您应该在 PivotFilters 属性:

之后调用 .Add2
ws.PivotTables(1).PivotFields("Effective deadline").ClearAllFilters()
ws.PivotTables(1).PivotFields("Effective deadline").PivotFilters.Add2(31, None, '10/10/2017')

此外,请注意您需要根据要应用的过滤器类型指定 XlPivotFilterType Enumeration(在本例中 xlBefore = 31