簡體   English   中英

如果工作簿包含數據透視表,則添加數據后無法保存Excel工作表

[英]Can't save Excel sheet after adding data if the workbook contains a Pivot table

我們正在嘗試構建一個默認的Excel儀表板,供用戶下載。 在下載Excel工作表時,我們希望使用其數據填充文件中的工作表。

我們正在使用EPPlus來處理Excel工作表。

簡而言之,工作表的結構如下:

  1. 包含報表元素的數據表Sheet A (數據透視表,數據透視圖和切片器)
  2. 包含整個數據集的工作Sheet B
  3. 定義為=OFFSET(Data!$A$1;0;0;COUNTA(Data!$A:$A);COUNTA(Data!$1:$1))的命名范圍僅適應於我們插入的數據集的大小那張紙
  4. 無論命名范圍包含什么,我都會加載到Power Query中並添加到工作簿數據模型中
  5. 工作Sheet A所有報告元素都配置為從數據模型中加載數據

總體而言,只要我們用數據手動填充工作Sheet B ,此方法就很好用。 當我們嘗試使用EPPlus填充數據時,嘗試保存文件時出現錯誤:

The cachesource is not a worksheet

通過反復試驗,我們剝離了零件表以找出問題的原因。 我們懷疑可能是切片器,使用Power Query / Data Model或具有指定范圍的技巧。 但是,這些似乎都不是問題-如果我們從工作表中刪除所有數據透視表,則可以保存工作簿。 令我感到驚訝的是,我們能夠很好地使用數據透視圖,僅是導致問題的表格。

關於如何避免EPPlus出現此問題的任何建議? 現在,我們繼續不使用數據透視表,希望在某些時候返回它們:)

錯誤-“ The cachesource is not a worksheet ”可能是由於Excel將范圍內的源數據識別為工作表中的范圍。

您可以使用ws.ListObjects.Add將表中范圍內的轉儲數據更改為表格B。 每當刷新數據透視表時,它都應自動獲取表中的所有數據。

如果有幫助,還請檢查相關問題中可用的另一種方法-將表而不是范圍定義為PivotTable 'cacheSource'

操作數據透視表數據時,有許多與緩存有關的問題 一次我在這里這另一個賞金

與EPPlus的輸入必須相同。 您必須手動處理Pivot數據緩存,如此處所示

在這里,這個人為使用EPPlus處理過濾器提供了完整的解決方案

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM