使用C#编程使用小计函数在Excel中对数据进行sorting

我有数据,我想应用小计function,然后按降序sorting结果数据。 到目前为止,我已经设法让我的代码应用小计function,然后更改视图,所以它只显示我想要sorting的列。 我不知道如何使用.Sort方法在这一点上只对可见的数据进行sorting。

我的代码来实现小计:

xcel.Range range = excelWorksheet.UsedRange; range.Subtotal(1, Excel.XlConsolidationFunction.xlSum, Type.Missing, (object)true, (object)false, Excel.XlSummaryRow.xlSummaryBelow); 

我的代码将视图更改为我想要sorting的列:

 excelWorksheet.Outline.ShowLevels(2, Type.Missing); 

在这一点上,我已经尝试了使用几乎所有我能想到的范围的.Sort方法的许多变体(可见范围,明确说明我想要的列,整个工作表,小计filter之前使用的范围,使用的范围在小计过滤之后)。 我也尝试过在Excel中录制一个macros,但我不知道如何将其转换回C#。

Excelmacros的确切,我需要的是:

 Range("G3").Select ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("G3"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Sheet1").Sort .SetRange Range("A2:G2853") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With 

有没有人知道如何在小计分组应用后对数据进行sorting?

我有同样的问题,但我只是把macros(非常相似你的),我试图匹配它与Excel方法sorting。 下面的工作对我来说:

  range.Sort(Key1: range.Columns[8], Order1: ExcelM.XlSortOrder.xlDescending, Header: ExcelM.XlYesNoGuess.xlYes,MatchCase: false, Orientation: ExcelM.XlSortOrientation.xlSortColumns, SortMethod:ExcelM.XlSortMethod.xlPinYin );