使用C#在Excel中对多个列进行sorting

我需要使用C#在Excel中的多个列进行sorting。 我正在使用Microsoft.Office.Interop.Excel做这个。 但Range.Sort允许我sorting只有三列。 我想分三个以上的列? 有没有办法,我可以使用Excel.Range.Sort方法来sorting超过三列?

在Excel 2007之前,您仅限于3个sorting键 – Range.Sort不会让您使用更多。 如果这是您的目标版本,那么您需要发挥创意:一些可能的想法是将数据拉入您的C#代码并对其进行sorting,或者构build一个包含连接键的额外工作表列,然后Sort正常方式应用Sort

如果您仅使用Excel 2007或更高版本,则可以使用更灵活的sortingfunction: Worksheet.Sort 。 我在A1:J30build立了一个30×10的随机数表,并logging了一个在前五列sorting的macros。 这是我得到的(在清理和重复代码之后):

 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 

这应该相当容易适用于您的C#代码…