我目前正在使用包含数据透视表的模板excel文件的Java应用程序。使用Apache POI刷新数据透视表
模板文件还有一个数据表,用于种植数据透视表。该数据表通过Apache POI API动态加载到Java应用程序中。
当我打开excel文件时,我必须手动刷新数据透视表才能正确加载数据。
是否有任何方法刷新POI API的数据透视表,所以我不必手动执行它?
我目前正在使用包含数据透视表的模板excel文件的Java应用程序。使用Apache POI刷新数据透视表
模板文件还有一个数据表,用于种植数据透视表。该数据表通过Apache POI API动态加载到Java应用程序中。
当我打开excel文件时,我必须手动刷新数据透视表才能正确加载数据。
是否有任何方法刷新POI API的数据透视表,所以我不必手动执行它?
对此的基本答案是否定的。 POI是一种文档格式的读写器。更新数据透视表是一个Excel引擎问题。当然,另一个应用程序可以尝试在这里复制Excel引擎的行为,但这真的会变得很难看。我建议使用Joel's通过web服务访问excel COM对象以解决此类问题。
这个帖子说,你就可以打开数据透视表的选项,这将导致它刷新本身自动每次打开工作簿时:
How can I refresh all the pivot tables in my excel workbook with a macro?
希望这将仍然是真实的你有后使用Apache POI来刷新或扩展数据透视表所基于的数据行。
这是可能的。 在PivotCacheDefinition
中,有一个属性refreshOnLoad
可以设置为true
。工作簿打开后,缓存将刷新。 More information here。
在POI中,可以通过在CTPivotCacheDefinition上调用方法setRefreshOnLoad(boolean bool)
(将布尔作为参数)来完成。
编辑: Apache POI现在提供了创建数据透视表的可能性,并且数据透视表在加载时被刷新为默认值。 Class XSSFPivotTable
调用哪个对象的方法?我的意思是`setRefreshOnLoad(布尔布尔)`。 – 2014-09-08 18:34:49
这可能会实现:
XSSFPivotTable pivotTable = pivotSheet.getPivotTables().get(0);
pivotTable.getPivotCacheDefinition().getCTPivotCacheDefinition().setRefreshOnLoad(true);
我有一个要求,我很好奇你怎么取得的数据表基础数据透视表。我有一个模板excel表,我用apache poi填充数据。不过,我有基于我的数据透视表这个填充数据的问题。有任何想法吗 ?? – Ash 2014-06-03 23:11:55
这里有什么帮助? – Ash 2014-06-04 18:43:11
我也有问题,当我在源表中填写数据,然后将文件写入磁盘时,生成文件中的数据透视表并不完整。我正在为此使用JXL。任何帮助非常感谢,因为我卡住了。 – 2018-01-24 07:04:32