我目前正在对使用模板的Excel文件,包含数据透视表的Java应用程序。
模板文件还具有一个数据片,其种子枢轴表。 此数据表是动态加载在通过Apache POI API的Java应用程序。
当我打开Excel文件,我必须手动刷新数据透视表以获得正确加载的数据。
有什么办法来刷新与POI API数据透视表,所以我不必做手工?
我目前正在对使用模板的Excel文件,包含数据透视表的Java应用程序。
模板文件还具有一个数据片,其种子枢轴表。 此数据表是动态加载在通过Apache POI API的Java应用程序。
当我打开Excel文件,我必须手动刷新数据透视表以获得正确加载的数据。
有什么办法来刷新与POI API数据透视表,所以我不必做手工?
你可以简单的激活会在每次打开文件时刷新数据透视表的选项。
这个微软的文档说:
透视选项对话框中的数据选项卡上,当打开该文件复选框选择刷新数据。
有可能的。 在PivotCacheDefinition
,有一个属性refreshOnLoad
可以设置为true
。 打开工作簿时,缓存则又刷新。 这里更多信息 。
在POI这可以通过调用方法来完成setRefreshOnLoad(boolean bool)
,采用一个布尔作为参数,在一个CTPivotCacheDefinition。
编辑:Apache的POI现在能够创建透视表和数据透视表刷新负载为默认的可能性。 类XSSFPivotTable
这篇文章说,你就可以打开数据透视表的选项,这将导致其在每次打开工作簿时自动刷新自身:
我怎么能刷新我的Excel工作簿中的所有数据透视表与宏?
希望你已经使用的Apache POI后刷新或延长其透视表所基于的数据行,这将仍然是真实的。
基本的答案是否定的。 POI是一种文档格式读写器。 更新透视表是一个Excel引擎问题。 当然,另一个应用程序可以在这里尝试复制一个Excel引擎的行为,但是这是真的要变得丑陋。 我建议使用乔尔的在Web服务访问Excel的COM对象的解决方法,以获得这种事情做。
这可能会实现:
XSSFPivotTable pivotTable = pivotSheet.getPivotTables().get(0);
pivotTable.getPivotCacheDefinition().getCTPivotCacheDefinition().setRefreshOnLoad(true);