EPPlus在DataField上排序数据透视表而不仅仅是RowField

时间:2014-08-13 20:53:02

标签: c# .net excel pivot-table epplus

我使用EPPlus工具包3.1版在工作表中创建了一个Excel数据透视表。我能够在行字段上对结果表进行排序,但希望能够在数据字段上进行排序。举个例子,我从这里下载了3.1源代码:

EEPlus 3.1 Source Code

有一个名为CreatePivotTable()的单元测试。它包含一个'数据'看起来像这样的标签:

var ws = _pck.Workbook.Worksheets.Add("Data");
ws.Cells["K1"].Value = "Item";
ws.Cells["L1"].Value = "Category";
ws.Cells["M1"].Value = "Stock";
ws.Cells["N1"].Value = "Price";
ws.Cells["O1"].Value = "Date for grouping";
...

然后测试添加了9个数据透视表。看第一个,代码是这样的:

var pt = wsPivot1.PivotTables.Add(wsPivot1.Cells["A1"], ws.Cells["K1:N11"], "Pivottable1");
pt.GrandTotalCaption = "Total amount";
pt.RowFields.Add(pt.Fields[1]);
pt.RowFields.Add(pt.Fields[0]);
pt.DataFields.Add(pt.Fields[3]);
pt.DataFields.Add(pt.Fields[2]);
pt.DataFields[0].Function = DataFieldFunctions.Product;
pt.DataOnRows = false;

原样,没有排序。如果我对主枢轴字段集合的第一个字段应用排序,它也是它工作的两个行字段中的第二个:

pt.Fields[0].Sort = eSortType.Descending;

但是,如果我想对其中一个DataField进行排序(两者都指向" Price":

pt.Fields[2].Sort = eSortType.Descending;
//or
pt.DataFields[0].Field.Sort = eSortType.Ascending;

排序不适用。如果我在excel中这样做并且手动添加它,它工作正常。另外,我在另一个项目中使用NetOffice,也可以这样做。这不是EPPLus可以做到的吗?

0 个答案:

没有答案