我正在尝试将 AutoFilter 添加到数据透视表列中,该列按值而不是按标题过滤数据。这是我如何尝试执行此操作的代码:
pivotTable2.addColumnLabel(DataConsolidateFunction.SUM, 29);
pivotTable2.addRowLabel(29);
pivotTable2.getCTPivotTableDefinition().getPivotFields().getPivotFieldArray(29).setDataField(true);
-- 跳过制作表格的代码行 --
org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPivotFilters filters =
org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPivotFilters.Factory.newInstance();
org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPivotFilter filter = filters.addNewFilter();
filter.setId(0);
filter.setFld(29);
filter.setType(org.openxmlformats.schemas.spreadsheetml.x2006.main.STPivotFilterType.VALUE_LESS_THAN);
filter.setStringValue1("0");
CTFilterColumn myCol = filter.addNewAutoFilter().addNewFilterColumn();
CTCustomFilters myFilter2= myCol.addNewCustomFilters();
CTCustomFilter custFilt = myFilter2.addNewCustomFilter();
custFilt.setOperator(STFilterOperator.LESS_THAN);
custFilt.setVal("0");
// filter.addNewAutoFilter().addNewFilterColumn().addNewCustomFilters().addNewCustomFilter().setVal("0");
filter.getAutoFilter().setRef("A1");
filter.getAutoFilter().getFilterColumnArray(0).setColId(0);
//set filters to pivot table definition
pivotTable2.getCTPivotTableDefinition().setFilters(filters);
但是,每当我运行此代码时,数据过滤器都不会出现在数据透视表中,而是照常打印数据透视表。如果我尝试 CAPTION_LESS_THAN,它会自动过滤标签过滤器而不是值过滤器。它可能与添加数据过滤器有关,但我不确定在哪里添加它。你能帮我解决这个问题吗?