EPPlus 对生成的 table 进行排序

EPPlus sort the generated table

通过 EPPlus 生成 table 后,如何告诉它我希望它自动按列排序?我想基本上告诉它按 A 列排序,然后是 B,然后是 C。

我正在生成 table 像这样:

internal static void MakeItATable(this ExcelWorksheet ws, string tableName = "Table1")
{
    var addr = new ExcelAddressBase(ws.Dimension.Address);
    var tbl = ws.Tables.Add(addr, tableName);
    tbl.ShowHeader = true;
    ws.Cells[ws.Dimension.Address].AutoFitColumns();
}

您可以将 table 排序为

ws.Cells[tbl.Address.Address].Sort(new[] { 0, 1, 2});

其中 {0, 1, 2} 表示 table 的第一、第二和第三列(不一定是工作表)

不幸的是,似乎没有选项可以判断 Headers 是否存在,因此 headers 深入 table。

如果您设法在没有第一行的情况下对 table 进行排序,您应该会成功,但我的大脑目前无法处理。

因为你知道有一个 header 并且你从它的 Address 知道 table 的尺寸,你可以告诉 EPPlus 跳过第一行:

var s = tbl.Address.Start;
var e = tbl.Address.End;

//Add 1 to skip the header
ws.Cells[s.Row + 1, s.Column, e.Row, e.Column].Sort(new[] { 0, 1, 2 });