【问题标题】:Sort Excel sheet by column using EPPlus使用 EPPlus 按列对 Excel 工作表进行排序
【发布时间】:2018-08-27 09:39:35
【问题描述】:

我正在使用EPPlus 生成 Excel 工作簿。

我正在想办法:

  1. 按特定列对工作表进行排序(相当于在 Excel 中单击排序 A-Z)或...
  2. 为特定列的自动筛选设置排序顺序

【问题讨论】:

  • 您可以在将数据输入工作表之前对其进行排序。
  • @increddibelly 你能按列对 CSV 文件(FileHelpers)进行排序吗?
  • 如果“列”是指“数据模型中的属性”,那么这正是我的意思,是的。列和行只是展示;数据模型和数据模型的杂耍可以随心所欲地完成。 data.OrderBy(x => x.MyPropertyAscending).ThenByDescending(x => x.MyOtherPropertyDescending);

标签: excel epplus


【解决方案1】:
var startRow = 1;    
var startColumn= 1;
var endRow= 10;
var endColumn= 10;
var sortColumn = 5; //6th Column because index is ZeroBased.
using (ExcelRange excelRange = yourWorkSheet.Cells[startRow, startColumn, endRow, endColumn])
     {
         excelRange.Sort(sortColumn, true);
     }

【讨论】:

    【解决方案2】:

    EPPlus 无法按列排序:https://epplus.codeplex.com/workitem/14791

    这不是您要求的,但如果这有助于 excel 互操作,您可以按如下所示按列排序:

    Worksheet sheet = workBook.Sheets[1];
    Range sortRange = sheet.Range["A1", "S100"];
    sortRange.Sort(sortRange.Columns[5], Microsoft.Office.Interop.Excel.XlSortOrder.xlDescending);
    

    这将按列 E 对范围 A1:S100 进行排序。

    【讨论】:

    • existingWorksheet.UsedRange.Sort(excel.Columns[5], XlSortOrder.xlDescending);
    • Unf Office 库不能在服务器端仅在客户端运行。
    【解决方案3】:

    Jan Kallman 在 4.5.1 中发布了一种排序方法。你可以在这里看到他展示的一个例子:

    https://github.com/JanKallman/EPPlus/issues/78#issuecomment-349650208

        /// Sort the range by value
        /// </summary>
        /// <param name="columns">The column(s) to sort by within the range. Zerobased</param>
        /// <param name="descending">Descending if true, otherwise Ascending. Default Ascending. Zerobased</param>
        /// <param name="culture">The CultureInfo used to compare values. A null value means CurrentCulture</param>
        /// <param name="compareOptions">String compare option</param>
        public void Sort(int[] columns, bool[] descending=null, CultureInfo culture=null, CompareOptions compareOptions=CompareOptions.None)
    

    【讨论】:

      【解决方案4】:

      使用工作表的 autofilter() 属性

      【讨论】:

      • 我确实使用了自动筛选,但我看不到任何设置其排序顺序设置的方法?
      • AutoFilter 是一个属性,但是你在这里像一个方法一样使用它。您也完全没有解释如何使用 AutoFilter。不好的答案。
      • EpPlus 的自动过滤器?
      猜你喜欢
      • 2015-02-18
      • 2014-08-13
      • 2019-11-21
      • 2016-03-30
      • 2015-09-02
      • 2017-08-05
      • 1970-01-01
      • 2012-02-07
      • 1970-01-01
      相关资源
      最近更新 更多