我目前正在使用一个包含数据透视表的模板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);