Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何按行和列字段值对Aspose中的透视表进行排序?_Java_Excel_Pivot Table_Aspose_Aspose Cells - Fatal编程技术网

Java 如何按行和列字段值对Aspose中的透视表进行排序?

Java 如何按行和列字段值对Aspose中的透视表进行排序?,java,excel,pivot-table,aspose,aspose-cells,Java,Excel,Pivot Table,Aspose,Aspose Cells,请找到下面的图片,展示我到底想做什么 我尝试在下面的代码中这样做,但它不能生成正确/可读的Excel文件。或者,如果我使用注释代码,它会生成正确的Excel文件,但不会按照预期正确排序 你能帮我实现上图中提到的目标吗 String sortByColName = "OrderDate"; String sortByRowName = "CategoryName"; PivotFieldCollection colFields = pivotTable.getColumnField

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

我尝试在下面的代码中这样做,但它不能生成正确/可读的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)

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

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


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

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

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


我在Aspose担任支持开发者/布道者。

感谢@Amjad为我指明了正确的方向!我已经按照您的建议进行了相关更改,但仍然无法生成预期的Excel。实际上,我正在将当前工作簿保存到ByteArrayOutputStream对象而不是文件(我无法更改代码的API)。此外,我对同一工作簿进行了两次排序(垂直和水平)。因为,这是同一个请求的一部分,我不确定,我可以在单个请求/线程中实现我想要的。请进一步引导我!嗯,将工作簿保存到流或文件路径不会有任何区别。我们建议您关注您的帖子()以供参考。感谢@Amjad提供正确的方向!我已经按照您的建议进行了相关更改,但仍然无法生成预期的Excel。实际上,我正在将当前工作簿保存到ByteArrayOutputStream对象而不是文件(我无法更改代码的API)。此外,我对同一工作簿进行了两次排序(垂直和水平)。因为,这是同一个请求的一部分,我不确定,我可以在单个请求/线程中实现我想要的。请进一步引导我!嗯,将工作簿保存到流或文件路径不会有任何区别。我们建议您关注您的帖子()以供参考。