2009-06-18 154 views
6

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

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

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

是否有任何方法刷新POI API的数据透视表,所以我不必手动执行它?

+0

我有一个要求,我很好奇你怎么取得的数据表基础数据透视表。我有一个模板excel表,我用apache poi填充数据。不过,我有基于我的数据透视表这个填充数据的问题。有任何想法吗 ?? – Ash 2014-06-03 23:11:55

+0

这里有什么帮助? – Ash 2014-06-04 18:43:11

+0

我也有问题,当我在源表中填写数据,然后将文件写入磁盘时,生成文件中的数据透视表并不完整。我正在为此使用JXL。任何帮助非常感谢,因为我卡住了。 – 2018-01-24 07:04:32

回答

1

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

4

这是可能的。 在PivotCacheDefinition中,有一个属性refreshOnLoad可以设置为true。工作簿打开后,缓存将刷新。 More information here

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

编辑: Apache POI现在提供了创建数据透视表的可能性,并且数据透视表在加载时被刷新为默认值。 Class XSSFPivotTable

+0

调用哪个对象的方法?我的意思是`setRefreshOnLoad(布尔布尔)`。 – 2014-09-08 18:34:49

5

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

Microsoft documentation说:

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

0

这可能会实现:

XSSFPivotTable pivotTable = pivotSheet.getPivotTables().get(0);  
pivotTable.getPivotCacheDefinition().getCTPivotCacheDefinition().setRefreshOnLoad(true); 
相关问题