我需要使用 C# 对 Excel 中的多个列进行排序。我正在使用 Microsoft.Office.Interop.Excel 来执行此操作。但是 Range.Sort 只允许我对三列进行排序。我想对超过三列进行排序?有没有办法可以使用 Excel.Range.Sort 方法对超过三列进行排序?
问问题
3311 次
1 回答
2
在 Excel 2007 之前,您仅限于 3 个排序键 -Range.Sort
不会让您使用更多。如果那是您的目标版本,那么您需要发挥创意:有几个可能的想法是将数据拉入您的 C# 代码并在那里对其进行排序,或者构建一个包含连接键的额外工作表列,然后Sort
照常应用。
如果您只使用 Excel 2007 或更高版本,则可以使用更灵活的排序功能:Worksheet.Sort
. 我在其中构建了一个 30x10 的随机数表,A1:J30
并记录了一个按前五列排序的宏。这就是我得到的(在对代码进行了一些清理和重复数据删除之后):
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# 代码......
于 2012-04-19T08:01:27.250 回答