若要按升序或降序对区域中的数据进行排序,请使用 Worksheet.Sort 方法。请注意,此方法具有多个重载,具有很大的优点。您可以指定对多列区域进行排序所依据的列、按多列排序或使用自定义比较器。
要按多列对数据进行排序,请按照以下步骤操作。
Vb.Net
'创建一个Workbook工作簿对象.
Dim workbook As New DevExpress.Spreadsheet.Workbook()
Dim worksheet As DevExpress.Spreadsheet.Worksheet = workbook.Worksheets("SortSample")
workbook.Worksheets.ActiveWorksheet = worksheet
'创建排序字段集合
Dim fields As New List(Of DevExpress.Spreadsheet.SortField)()
'第一个排序字段。第一列(偏移量=0)将使用升序进行排序。
Dim sortField1 As New DevExpress.Spreadsheet.SortField()
sortField1.ColumnOffset = 0
sortField1.Comparer = worksheet.Comparers.Ascending
fields.Add(sortField1)
'第二个排序字段。第二列(偏移量=1)将使用升序进行排序。
Dim sortField2 As New DevExpress.Spreadsheet.SortField()
sortField2.ColumnOffset = 1
sortField2.Comparer = worksheet.Comparers.Ascending
fields.Add(sortField2)
'通过对字段进行排序对区域进行排序。
Dim range As DevExpress.Spreadsheet.CellRange = worksheet.Range("A3:F22")
worksheet.Sort(range, fields)
C# |
// 创建一个Workbook工作簿对象. DevExpress.Spreadsheet.Workbook workbook = new DevExpress.Spreadsheet.Workbook(); DevExpress.Spreadsheet.Worksheet worksheet = workbook.Worksheets["SortSample"]; workbook.Worksheets.ActiveWorksheet = worksheet; // 创建排序字段集合 List<DevExpress.Spreadsheet.SortField> fields = new List<DevExpress.Spreadsheet.SortField>(); // 第一个排序字段。第一列(偏移量=0)将使用升序进行排序。 DevExpress.Spreadsheet.SortField sortField1 = new DevExpress.Spreadsheet.SortField(); sortField1.ColumnOffset = 0; sortField1.Comparer = worksheet.Comparers.Ascending; fields.Add(sortField1); // 第二个排序字段。第二列(偏移量=1)将使用升序进行排序。 DevExpress.Spreadsheet.SortField sortField2 = new DevExpress.Spreadsheet.SortField(); sortField2.ColumnOffset = 1; sortField2.Comparer = worksheet.Comparers.Ascending; fields.Add(sortField2); // 通过对字段进行排序对区域进行排序。 DevExpress.Spreadsheet.CellRange range = worksheet.Range["A3:F22"]; worksheet.Sort(range, fields); |
下图显示了结果(工作簿在 Microsoft® Excel® 中打开)。单元格区域按第一列和第二列升序排序。