我目前正在开发一个Java应用程序,它使用包含数据透视表的模板excel文件。
模板文件还有一个数据表,可以为数据透视表提供种子。此数据表通过Apache POI api在Java应用程序中动态加载。
当我打开excel文件时,我必须手动刷新数据透视表以正确加载数据。
有没有办法用POI api刷新Pivot表,所以我不必手动执行它?
答案 0 :(得分:5)
答案 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);