我正在构建一个工具来自动创建包含表和关联的数据透视表的Excel工作簿。表格结构在一张纸上,稍后使用另一个工具从数据库中提取数据。数据透视表位于第二张纸上,使用上一张纸的表作为来源。将表格而非范围定义为数据透视表'cacheSource'
我正在使用EPPlus来帮助构建工具,但遇到了指定cacheSource
的问题。我使用以下内容来创建的范围和数据透视表:
var dataRange = dataWorksheet.Cells[dataWorksheet.Dimension.Address.ToString()];
var pivotTable = pivotWorksheet.PivotTables.Add(pivotWorksheet.Cells["B3"], dataRange, name);
这设置cacheSource
到:
<x:cacheSource type="worksheet" xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<x:worksheetSource ref="A1:X2" sheet="dataWorksheet" />
或Excel内,数据源被设置为:
dataWorksheet!$A$1:$X$2
如果表的大小从不改变,但这种工作正常,但由于行数是动态的,我正在查找何时刷新数据,数据只能从指定的初始范围读取。
我所想要做的就是给cacheSource编程设置为:
<x:cacheSource type="worksheet" xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<x:worksheetSource name="dataWorksheet" />
</x:cacheSource>
或Excel中,设置数据源:
dataWorksheet
我相信这是可能做到这通过直接访问XML(任何指针在这将是最受欢迎的),但有没有办法使用EPPlus做到这一点?
如果源数据是一个表(在Excel的INSERT> Tables - Table)PT缓存可以由类似'Table1'而不是范围来驱动,所以在刷新时,PT会自动获取插入到表中的所有新条目。 – pnuts
感谢您的评论;这是我正在尝试设置的。 EPPlus似乎没有将源数据添加为表格的方法;它似乎只会接受一个静态范围。 – BadgersArise