我正在構建一個工具來自動創建包含表和關聯的數據透視表的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