0

请找到下面的图片来展示我到底想要做什么。

数据透视表用例演示

我试图在下面的代码中这样做,但它不会产生正确/可读的 Excel 文件。或者,如果我使用注释代码,它会生成正确的 Excel 文件,但不会按预期正确排序。

你能帮我实现上图中提到的目标吗?

  String sortByColName = "OrderDate";
  String sortByRowName = "CategoryName";

  PivotFieldCollection colFields = pivotTable.getColumnFields();
  PivotFieldCollection rowFields = pivotTable.getRowFields();

  PivotField sortByColField = colFields.get(sortByColName);

  sortByColField.setAutoSort(true);
  sortByColField.setAscendSort(true);
  sortByColField.setAutoSortField(2); /* sortByColField.setAutoSortField(-1); */
  sortByColField.setAutoShow(true);
  sortByColField.setAscendShow(true);
  sortByColField.setAutoShowField(0);

  PivotField sortByRowField = rowFields.get(sortByRowName);
  sortByRowField.setAutoSort(true);
  sortByRowField.setAscendSort(true);
  sortByRowField.setAutoSortField(2); /* sortByRowField.setAutoSortField(-1); */
  sortByRowField.setAutoShow(true);
  sortByRowField.setAscendShow(true);
  sortByRowField.setAutoShowField(0)
4

1 回答 1

2

由于您的要求是根据数据透视表报告中的某些特定值/区域自定义排序,因此您无法直接通过数据透视表选项实现,您可以在 MS Excel 中手动确认。恐怕,您必须首先通过 Aspose.Cells API 创建您的数据透视表,然后您必须使用其数据刷新数据透视表(即使用 PivoTable.refreshData() 和 PivotTable.calculateData() 等),所以 Aspose.Cells应将数据透视表粘贴/呈现到工作表单元格中。现在使用通用数据排序功能(请参阅文档以供参考:http ://www.aspose.com/docs/display/cellsjava/Data+Sorting) 通过 Aspose.Cells API 对所需区域进行相应排序(使用从上到下或从左到右的选项)。这不是那么简单,因为您首先需要找出要排序的区域或区域的一部分(行或列)。在这里,您可以使用 Aspose.Cells API 提供的查找/搜索选项。

如果您仍然认为可以通过 MS Excel 中的数据透视表选项直接完成此类自定义排序,请在 MS Excel 中手动创建所需的数据透视表,保存 Excel 文件并在您的线程中提供给我们,我们会尽快检查并帮助您。

我在 Aspose 担任支持开发人员/传播者。

于 2016-04-11T18:53:37.510 回答