Tôi hy vọng điều này có thể giúp tôi, ít nhất, trả lời một trong 2 câu hỏi tôi đã hỏi here, nhưng tôi đang tìm cách tạo một PivotCache trong EPPlus/OpenXML và có thể ' t tìm thấy bất cứ điều gì trực tuyến/trong tài liệu của họ cho thấy làm thế nào để làm điều đó.OpenXML/EPPlus - Tạo PivotCache trong .Net
Vì vậy, giả sử tôi có một trang tính Excel, wksRawData
được tạo trong EPPlus và tôi muốn tạo trang tính thứ hai với bảng tổng hợp dựa trên bộ nhớ đệm của wksRawData.Cells(wksRawData.Dimension.Address)
- Với hy vọng sau đó tôi có thể xóa wksRawData nhưng vẫn giữ nguyên bảng tổng hợp. Tôi sẽ làm như thế nào?
Cho đến nay, mã của tôi để tạo các bảng pivot trong bảng thứ hai của tôi là:
Dim wksRawData As ExcelWorksheet = wbk.Worksheets("Raw Data")
Dim wksPvtTbl As ExcelWorksheet = wbk.Worksheets("PivotTbl")
' Insert the Pivot Table to the sheet
Dim DataRange As ExcelRange = wksRawData.Cells(wksRawData.Dimension.Address)
Dim pvtTable As OfficeOpenXml.Table.PivotTable.ExcelPivotTable = wksPvtTbl.PivotTables.Add(wksPvtTbl.Cells("B4"), DataRange, "MyPivotTable")
pvtTable.Compact = True
pvtTable.CompactData = True
pvtTable.Outline = True
pvtTable.OutlineData = True
pvtTable.ShowHeaders = True
pvtTable.UseAutoFormatting = True
pvtTable.ApplyWidthHeightFormats = True
pvtTable.ShowDrill = True
pvtTable.RowHeaderCaption = "Caption"
' Set the top field
Dim r1 As OfficeOpenXml.Table.PivotTable.ExcelPivotTableField = pvtTable.Fields("FirstField")
r1.Sort = OfficeOpenXml.Table.PivotTable.eSortType.Ascending
pvtTable.RowFields.Add(r1)
' Set the second field
Dim r2 As OfficeOpenXml.Table.PivotTable.ExcelPivotTableField = pvtTable.Fields("SecondField")
r2.Sort = OfficeOpenXml.Table.PivotTable.eSortType.Ascending
pvtTable.RowFields.Add(r2)
r2.ShowAll = False
' Set the DataField
Dim df1 As OfficeOpenXml.Table.PivotTable.ExcelPivotTableField = pvtTable.Fields("DataField")
df1.SubTotalFunctions = OfficeOpenXml.Table.PivotTable.eSubTotalFunctions.Sum
pvtTable.DataFields.Add(df1)
XIN, bất kỳ và tất cả sự giúp đỡ về vấn đề này hay vấn đề khác sẽ thực sự được đánh giá cao - Cho dù đó là trong C# hoặc VB, EPPlus hoặc OpenXML - Tôi chỉ cần làm việc này !!!
CẢM ƠN!
Tôi hơi bối rối về ý nghĩa của bạn ở đây ... Thách thức của tôi là tôi muốn tạo bảng tổng hợp dựa trên dữ liệu trong trang tính thứ hai và sau đó xóa trang tính thứ hai. Thách thức là nếu bạn xóa trang tính thứ hai qua EPPlus, bảng tổng hợp sẽ trống khi bạn mở sổ làm việc. Logic của tôi là sau đó lưu dữ liệu trong một PivotCache (mà sau đó sẽ cho phép tôi xóa trang tính thứ hai), nhưng tôi không thể tìm ra cách để làm điều đó. –
Theo logic của bạn từ Q khác, tôi có thể viết mã cho workbook_open sẽ xóa bảng thứ hai sau khi pivotcache được tạo tự động bởi excel khi sổ làm việc mở, nhưng ở đây tôi muốn tìm hiểu cách tạo bộ nhớ cache thực. Bất kỳ suy nghĩ nào ??/Bạn gợi ý gì?? –