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 });
通过 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 });