使用Apache POI刷新数据透视表

时间:2009-06-18 03:43:11

标签: java apache excel pivot-table apache-poi

我目前正在开发一个Java应用程序,它使用包含数据透视表的模板excel文件。

模板文件还有一个数据表,可以为数据透视表提供种子。此数据表通过Apache POI api在Java应用程序中动态加载。

当我打开excel文件时,我必须手动刷新数据透视表以正确加载数据。

有没有办法用POI api刷新Pivot表,所以我不必手动执行它?

5 个答案:

答案 0 :(得分:5)

您可以简单地激活每次打开文件时刷新数据透视表的选项。

Microsoft documentation说:

  

在“数据透视表选项”对话框的“数据”选项卡上,选中“打开文件时刷新数据”复选框。

答案 1 :(得分:4)

有可能。 在PivotCacheDefinition中,有一个属性refreshOnLoad可以设置为true。然后在打开工作簿时刷新缓存。 More information here

在POI中,这可以通过在CTPivotCacheDefinition上调用方法setRefreshOnLoad(boolean bool)来完成,该方法采用布尔值作为参数。

编辑: 现在,Apache POI可以创建数据透视表,并且默认情况下会在加载时刷新数据透视表。 Class XSSFPivotTable

答案 2 :(得分:3)

这篇文章说你可以打开数据透视表上的一个选项,这个选项会在每次打开工作簿时自动刷新它自己:

How can I refresh all the pivot tables in my excel workbook with a macro?

希望在使用Apache POI刷新或扩展数据透视表所基于的数据行之后,这仍然是正确的。

答案 3 :(得分:1)

对此的基本答案是否定的。 POI是一种文档格式的读写器。更新数据透视表是一个excel引擎问题。当然,另一个应用程序可能会尝试在这里复制Excel引擎行为,但这确实会变得丑陋。我建议使用Joel's解决方法,通过Web服务访问excel COM对象,以完成此类任务。

答案 4 :(得分:0)

这可能有效:

XSSFPivotTable pivotTable = pivotSheet.getPivotTables().get(0);     
pivotTable.getPivotCacheDefinition().getCTPivotCacheDefinition().setRefreshOnLoad(true);