作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我们正在尝试构建一个用户可以下载的默认 Excel 仪表板。下载 Excel 工作表时,我们想用他们的数据填充文件中的工作表。
我们使用 EPPlus 来处理 Excel 工作表。
简而言之,sheet的结构如下:
Sheet A
包含报告元素(数据透视表、数据透视图和切片器)Sheet B
包含整个数据集=OFFSET(Data!$A$1;0;0;COUNTA(Data!$A:$A);COUNTA(Data!$1:$1))
的命名范围适应我们插入该工作表的数据集的大小Sheet A
中的所有报告元素都配置为从数据模型加载数据总的来说,只要我们用我们的数据手动填充 Sheet B
,这就很好用。当我们尝试使用 EPPlus 填充数据时,我们在尝试保存文件时遇到错误:
The cachesource is not a worksheet
通过反复试验,我们剥离了工作表的各个部分以找出问题的原因。我们怀疑它可能是切片器、Power Query/数据模型的使用或命名范围的技巧。但是,这些看起来都不是问题 - 如果我们从工作表中删除所有数据透视表,那么我们就可以很好地保存工作簿。令我惊讶的是,我们能够很好地使用数据透视图,只是导致问题的表格。
关于如何使用 EPPlus 避免这个问题有什么建议吗?现在,我们继续不使用数据透视表,我们希望它们在某个时候返回:)
最佳答案
错误 - “缓存源不是工作表
”可能是由于 Excel 将范围内的源数据识别为工作表中的范围。
您可以使用 ws.ListObjects.Add
将范围内的转储数据更改为表格 B。每当刷新数据透视表时,它应该会自动获取表中的所有数据。
如果有帮助,请同时检查相关问题中的另一个可用替代方案 - 将表而不是范围定义为 PivotTable 'cacheSource'
。
关于c# - 如果工作簿包含数据透视表,则在添加数据后无法保存 Excel 工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46808669/
我是一名优秀的程序员,十分优秀!