gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 19:45:32 25 4
gpt4 key购买 nike

我使用 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 进行排序(都指向“价格”:
pt.Fields[2].Sort = eSortType.Descending;
//or
pt.DataFields[0].Field.Sort = eSortType.Ascending;

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

最佳答案

我面临同样的问题并找到了解决方案。如果有人正在搜索它,希望它会有所帮助:)

var rowField = pivotTable.RowFields.Add(pivotTable.Fields[rowFieldName]);
// or var rowField = pivotTable.Fields[rowFieldName]; if rowField is already added
var dataField = pivotTable.DataFields.Add(pivotTable.Fields[dataFieldName]);
rowField.SetAutoSort(dataField, eSortType.Ascending);
rowField.Items.Refresh();
引用: https://epplussoftware.com/en/Developers/SortingRangesAndTables

关于c# - EPPlus 在 DataField 上排序数据透视表,而不仅仅是 RowField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25295921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com