Previous topicNext topic
Help > 开发指南 > Excel > API > 示例 >
排序

若要按升序或降序对区域中的数据进行排序,请使用 Worksheet.Sort 方法。请注意,此方法具有多个重载,具有很大的优点。您可以指定对多列区域进行排序所依据的列、按多列排序或使用自定义比较器。

要按多列对数据进行排序,请按照以下步骤操作。

  1. 为要从中排序的每个列创建 SortField 对象。使用 SortField.ColumnOffset 属性指定此列在范围内的位置,并使用 SortField.Comparer 属性分配比较器。可以使用负责最终用户执行的排序操作的内置比较器之一,而不是使用 IComparer<T> <CellValue > 接口实现自己的比较器。有两个内置比较器 - Worksheet.Comparers.Ascending 用于按升序排序;Worksheet.Comparers.Descending 用于按降序排序。
  2. 创建包含排序字段的列表。
  3. 使用两个参数调用 Worksheet.Sort 方法:第一个参数是要排序的 CellRange,另一个参数是排序字段列表。

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® 中打开)。单元格区域按第一列和第二列升序排序。