如果工作簿包含数据透视表,则在添加数据后无法保存Excel工作表

我们正在尝试构build一个供用户下载的默认Excel仪表板。 当下载Excel工作表时,我们希望用他们的数据填充文件中的工作表。

我们使用EPPlus来处理Excel工作表。

总之,表格的结构如下:

  1. 报表元素(透视表,数据透视图和切片器)
  2. Sheet B包含整个数据集
  3. 定义为=OFFSET(Data!$A$1;0;0;COUNTA(Data!$A:$A);COUNTA(Data!$1:$1))的命名范围只适用于我们插入的数据集的大小那张纸
  4. 无论命名范围包含我加载到电源查询并添加到工作簿数据模型
  5. 工作Sheet A所有报告元素都被configuration为从数据模型中加载数据

总的来说,只要我们手工填写Sheet B与我们的数据,这个工作很好。 当我们尝试使用EPPlus填写数据时,在尝试保存文件时出现错误:

 The cachesource is not a worksheet 

通过试验和错误,我们已经剥去了它的部分,以隔离问题的原因。 我们怀疑它可能是切片机,使用Power Query / Data Model或者命名范围的技巧。 但是,这些看起来都不是问题 – 如果我们从工作表中删除所有数据透视表,那么我们就可以保存工作簿了。 令我感到意外的是,我们可以使用Pivot Charts,这只是造成问题的表格。

有关如何避免与EPPlus这个问题的任何build议? 现在,我们继续不使用数据透视表,我们希望他们在某个时候返回:)

错误 – “ The cachesource is not a worksheet ”可能是由于通过Excel将范围内的源数据识别为工作表中的范围。

您可以使用ws.ListObjects.Add将该范围内的转储数据更改为表B的表格。 每当数据透视表刷新时,它应该自动获取表中的所有数据。

还请检查另一个可用的相关问题的替代方法 – 定义一个表,而不是一个范围作为PivotTable 'cacheSource' ,如果有帮助。

操作Pivot数据时,存在许多与caching相关的问题 。 有一次,我在这里看看这个其他的赏金 。

必须与EPPlus相同。 您必须手动处理Pivot数据caching,就像这里所做的那样。

在这里,这个家伙提供完整的解决scheme,用EPPlus处理filter 。

希望能帮助到你。