刷新数据透视表与Apache POI(Refresh Pivot Table with Apache

2019-07-28 22:16发布

我目前正在对使用模板的Excel文件,包含数据透视表的Java应用程序。

模板文件还具有一个数据片,其种子枢轴表。 此数据表是动态加载在通过Apache POI API的Java应用程序。

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

有什么办法来刷新与POI API数据透视表,所以我不必做手工?

Answer 1:

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

这个微软的文档说:

透视选项对话框中的数据选项卡上,当打开该文件复选框选择刷新数据。



Answer 2:

有可能的。 在PivotCacheDefinition ,有一个属性refreshOnLoad可以设置为true 。 打开工作簿时,缓存则又刷新。 这里更多信息 。

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

编辑:Apache的POI现在能够创建透视表和数据透视表刷新负载为默认的可能性。 类XSSFPivotTable



Answer 3:

这篇文章说,你就可以打开数据透视表的选项,这将导致其在每次打开工作簿时自动刷新自身:

我怎么能刷新我的Excel工作簿中的所有数据透视表与宏?

希望你已经使用的Apache POI后刷新或延长其透视表所基于的数据行,这将仍然是真实的。



Answer 4:

基本的答案是否定的。 POI是一种文档格式读写器。 更新透视表是一个Excel引擎问题。 当然,另一个应用程序可以在这里尝试复制一个Excel引擎的行为,但是这是真的要变得丑陋。 我建议使用乔尔的在Web服务访问Excel的COM对象的解决方法,以获得这种事情做。



Answer 5:

这可能会实现:

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


文章来源: Refresh Pivot Table with Apache POI