diff --git a/ClosedXML/Excel/PivotTables/IXLPivotTable.cs b/ClosedXML/Excel/PivotTables/IXLPivotTable.cs index 1b2d171..bcc4292 100644 --- a/ClosedXML/Excel/PivotTables/IXLPivotTable.cs +++ b/ClosedXML/Excel/PivotTables/IXLPivotTable.cs @@ -93,7 +93,7 @@ public enum XLPivotSortType { - Manual = 0, + Default = 0, Ascending = 1, Descending = 2 } diff --git a/ClosedXML/Excel/PivotTables/XLPivotField.cs b/ClosedXML/Excel/PivotTables/XLPivotField.cs index 920759d..64a0b99 100644 --- a/ClosedXML/Excel/PivotTables/XLPivotField.cs +++ b/ClosedXML/Excel/PivotTables/XLPivotField.cs @@ -12,7 +12,7 @@ SourceName = sourceName; Subtotals = new List(); SelectedValues = new List(); - SortType = XLPivotSortType.Manual; + SortType = XLPivotSortType.Default; } public String SourceName { get; private set; } diff --git a/ClosedXML/Excel/XLWorkbook_Save.cs b/ClosedXML/Excel/XLWorkbook_Save.cs index 0c4ddfc..10c5e3b 100644 --- a/ClosedXML/Excel/XLWorkbook_Save.cs +++ b/ClosedXML/Excel/XLWorkbook_Save.cs @@ -2296,7 +2296,7 @@ pf.Compact = false; } - if (xlpf.SortType != XLPivotSortType.Manual) + if (xlpf.SortType != XLPivotSortType.Default) { pf.SortType = new EnumValue((FieldSortValues)xlpf.SortType); } diff --git a/ClosedXML_Examples/PivotTables/PivotTables.cs b/ClosedXML_Examples/PivotTables/PivotTables.cs index b8f6023..0d92978 100644 --- a/ClosedXML_Examples/PivotTables/PivotTables.cs +++ b/ClosedXML_Examples/PivotTables/PivotTables.cs @@ -193,6 +193,21 @@ .AddSelectedValue(new DateTime(2017, 05, 03)); #endregion Pivot Table with filter + + #region Pivot table sorting + + ptSheet = wb.Worksheets.Add("pvtSort"); + pt = ptSheet.PivotTables.AddNew("pvtSort", ptSheet.Cell(1, 1), dataRange); + + pt.RowLabels.Add("Name").SetSort(XLPivotSortType.Ascending); + pt.RowLabels.Add("Month").SetSort(XLPivotSortType.Descending); + + pt.Values.Add("NumberOfOrders").SetSummaryFormula(XLPivotSummary.Sum); + pt.Values.Add("Quality").SetSummaryFormula(XLPivotSummary.Sum); + + pt.SetRowHeaderCaption("Pastry name"); + + #endregion Different kind of pivot wb.SaveAs(filePath); } diff --git a/ClosedXML_Tests/Excel/Loading/LoadingTests.cs b/ClosedXML_Tests/Excel/Loading/LoadingTests.cs index 64ab73c..60cee56 100644 --- a/ClosedXML_Tests/Excel/Loading/LoadingTests.cs +++ b/ClosedXML_Tests/Excel/Loading/LoadingTests.cs @@ -122,6 +122,20 @@ } } + [Test] + public void CanLoadOrderedPivotTable() + { + using (var stream = TestHelper.GetStreamFromResource(TestHelper.GetResourcePath(@"Misc\LoadPivotTables.xlsx"))) + using (var wb = new XLWorkbook(stream)) + { + var ws = wb.Worksheet("OrderedPivotTable"); + var pt = ws.PivotTable("OrderedPivotTable"); + + Assert.AreEqual(XLPivotSortType.Ascending, pt.RowLabels.Single().SortType); + Assert.AreEqual(XLPivotSortType.Descending, pt.ColumnLabels.Single().SortType); + } + } + /// /// For non-English locales, the default style ("Normal" in English) can be /// another piece of text (e.g. ??????? in Russian). diff --git a/ClosedXML_Tests/Resource/Examples/PivotTables/PivotTables.xlsx b/ClosedXML_Tests/Resource/Examples/PivotTables/PivotTables.xlsx index d6f65c7..6439029 100644 --- a/ClosedXML_Tests/Resource/Examples/PivotTables/PivotTables.xlsx +++ b/ClosedXML_Tests/Resource/Examples/PivotTables/PivotTables.xlsx Binary files differ diff --git a/ClosedXML_Tests/Resource/Misc/LoadPivotTables.xlsx b/ClosedXML_Tests/Resource/Misc/LoadPivotTables.xlsx index 6fad7fe..93e85b8 100644 --- a/ClosedXML_Tests/Resource/Misc/LoadPivotTables.xlsx +++ b/ClosedXML_Tests/Resource/Misc/LoadPivotTables.xlsx Binary files differ