使用C在Excel中跨多个列排序#

使用C在Excel中跨多个列排序#,excel,c#-4.0,office-interop,Excel,C# 4.0,Office Interop,我需要使用C#在Excel中跨多个列进行排序。我正在使用Microsoft.Office.Interop.Excel执行此操作。但是Range.Sort允许我只跨三列进行排序。我想在三列以上进行排序?是否有一种方法可以使用Excel.Range.Sort方法对三列以上的列进行排序?在Excel 2007之前,您被限制为3个排序键-范围。Sort不会让您使用更多。如果这是您的目标版本,那么您需要发挥创意:有几个可能的想法是将数据拉入C#code并在那里排序,或者构建一个包含串联键的额外工作表列,然

我需要使用C#在Excel中跨多个列进行排序。我正在使用Microsoft.Office.Interop.Excel执行此操作。但是Range.Sort允许我只跨三列进行排序。我想在三列以上进行排序?是否有一种方法可以使用Excel.Range.Sort方法对三列以上的列进行排序?

在Excel 2007之前,您被限制为3个排序键-
范围。Sort
不会让您使用更多。如果这是您的目标版本,那么您需要发挥创意:有几个可能的想法是将数据拉入C#code并在那里排序,或者构建一个包含串联键的额外工作表列,然后像往常一样应用
sort

如果您专门使用Excel 2007或更高版本,则有一种更灵活的排序功能可用:
Worksheet.Sort
。我在
A1:J30
中构建了一个30x10的随机数表,并记录了一个按前五列排序的宏。这就是我得到的(在清理和消除代码重复后):


这应该很容易应用到您的C代码中…

谢谢Mike。我能够将其应用到我的C代码中。它工作得很好。
With ActiveWorkbook.Worksheets("Sheet1").Sort
    With .SortFields
        .Clear
        .Add Key:=Range("A1:A30"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .Add Key:=Range("B1:B30"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .Add Key:=Range("C1:C30"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .Add Key:=Range("D1:D30"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .Add Key:=Range("E1:E30"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    End With
    .SetRange Range("A1:J30")
    .Header = xlGuess
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With