0

我正在尝试将 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,它会自动过滤标签过滤器而不是值过滤器。它可能与添加数据过滤器有关,但我不确定在哪里添加它。你能帮我解决这个问题吗?

4

0 回答 0