c# - 使用 Excel Interop C# 对 Excel 行进行排序

标签 c# excel sorting excel-interop

我有一个 C# 程序,它将结果输出到 Excel 电子表格中。每行包含参赛者的信息,包括姓名、身份证号、地址、分数等多个字段,每个字段位于不同的列中。我想根据分数对所有这些竞争对手进行排序(因此我想对这些行进行排序),记录从最高到最低降序排序。解决这个问题的最佳方法是什么?这是我正在尝试的代码,但它不起作用。

 Excel.Range sortRange;
                sortRange = worksheet.get_Range("A14", "K32");
                Excel.Range scoreColumn;
                scoreColumn = worksheet.get_Range("C14", "C32");
                sortRange.Sort(scoreColumn, Excel.XlSortOrder.xlDescending,

最佳答案

啊哈哈,我刚刚完成了这个,遗憾的是代码是用 VB.NET 编写的,如果您在翻译成 C# 时遇到任何困难,请告诉我

        Dim lastrow As Integer = 0
        lastrow = xlsSheet.UsedRange.Row + xlsSheet.UsedRange.Rows.Count - 1


        Dim myRange = xlsSheet.range("A2", "Q" & lastrow)
        myRange.Select()
        xlsApp.ActiveWorkbook.Worksheets("your_work_sheet_name").Sort.SortFields.Add(Key:= _
    xlsSheet.Range("A2:A" & lastrow), Order:=Microsoft.Office.Interop.Excel.XlSortOrder.xlAscending)
        xlsApp.ActiveWorkbook.Worksheets("your_work_sheet_name").Sort.SortFields.Add(Key:= _
    xlsSheet.Range("B2:B" & lastrow), Order:=Microsoft.Office.Interop.Excel.XlSortOrder.xlAscending)

         With xlsApp.ActiveWorkbook.Worksheets("your_work_sheet_name").Sort
            .SetRange(myRange)
            .Header = Microsoft.Office.Interop.Excel.XlYesNoGuess.xlYes
            .MatchCase = False
            .Orientation = Microsoft.Office.Interop.Excel.XlSortOrientation.xlSortColumns
            .SortMethod = Microsoft.Office.Interop.Excel.XlSortMethod.xlPinYin
            .Apply()
        End With

关于c# - 使用 Excel Interop C# 对 Excel 行进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12936457/

相关文章:

c# - 按 id 区分包含对象的列表

vba - Excel VBA : Run-time error (Method 'Value' of object 'Range' failed), 但仅限连续运行

excel vba,从工作簿中删除所有名称而不循环

algorithm - 计数排序的时间复杂度

javascript - asp 文本框控件上的必填字段验证和当前日期验证

c# - 左右粗边框

c# - 如何在用户输入时替换文本框中的字符? (在 C# 中)

android - 如何将 Android 字符串资源导入/导出到 Excel 以进行本地化?

c# - 如何在方法中将属性和排序顺序作为参数传递给排序列表

javascript - 如何按时间字符串值对对象数组进行排序?