使用ApachePOI和Java在XSSFPivotTable中按值而不是按标签进行筛选
我正在尝试向透视表列添加一个自动筛选,该列按值而不是按标题筛选数据。这是我的代码,说明我是如何做到这一点的:使用ApachePOI和Java在XSSFPivotTable中按值而不是按标签进行筛选,java,excel,apache-poi,Java,Excel,Apache Poi,我正在尝试向透视表列添加一个自动筛选,该列按值而不是按标题筛选数据。这是我的代码,说明我是如何做到这一点的: pivotTable2.addColumnLabel(DataConsolidateFunction.SUM, 29); pivotTable2.addRowLabel(29); pivotTable2.getCTPivotTableDefinition().getPivotFields().getPivotFieldArray(29).setDataFi
pivotTable2.addColumnLabel(DataConsolidateFunction.SUM, 29);
pivotTable2.addRowLabel(29);
pivotTable2.getCTPivotTableDefinition().getPivotFields().getPivotFieldArray(29).setDataField(true);
--跳过生成代码表行--
但是,每当我运行这段代码时,数据过滤器不会为透视表显示,而是像正常情况一样打印透视表。如果我尝试使用CAPTION_LESS_THAN,它会自动筛选标签筛选器而不是值筛选器。这可能与添加数据过滤器有关,但我不确定在哪里添加它。你能帮我解决这个问题吗。你有没有问过自己,为什么你关于数据透视表的多个问题没有得到答案?因为缺乏足够的资源,所以不清楚你到底想要实现什么。@AxelRichter看看这个新例子:
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);