我目前正在使用包含數據透視表的模板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