我正在使用EPPlus生成 Excel 工作簿。
我试图弄清楚如何:
- 按特定列对工作表进行排序(相当于在 Excel 中单击排序 AZ)或...
- 为特定列的自动筛选设置排序顺序
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 进行排序。
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);
}
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)
使用工作表的 autofilter() 属性