使用Apache POI刷新数据透视表

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

该模板文件还有一个数据表,种植数据透视表。 该数据表通过Apache POI APIdynamic加载到Java应用程序中。

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

有什么办法刷新POI API的数据透视表,所以我不必手动做到这一点?

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

在POI中,可以通过调用setRefreshOnLoad(boolean bool)的方法setRefreshOnLoad(boolean bool)来完成,该方法将一个布尔值作为参数。

编辑︰现在的Apache POI提供了创建数据透视表的可能性和数据透视表刷新加载作为默认值。 类XSSFPivotTable

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

这个微软文档说:

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

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

我怎样才能刷新我的Excel工作簿中的所有数据透视表?

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

基本的答案是否定的。 POI是一个文档格式的读写器。 更新数据透视表是一个Excel引擎问题。 当然,另一个应用程序可以尝试在这里复制Excel引擎的行为,但这真的很难看。 我建议使用Joel的解决方法通过web服务访问excel COM对象来完成这种事情。

这可能工作:

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