在 ClosedXML 中,是否可以从列 header 名称中获取列字母?

In ClosedXML, is there anyway to get the column letter from column header name?

我有一个包含 headers 列的 excel 工作表,我不想对列字母或索引进行硬编码,因此我想弄清楚如何使其动态化。我正在寻找这样的东西:

var ws = wb.Worksheet("SheetName");

var range = ws.RangeUsed();
var table = range.AsTable();

string colLetter = table.GetColumnLetter("ColHeader");

foreach (var row in table.Rows())
{
  if (i > 1)
  {
    string val = row.Cell(colLetter).Value.ToString();
  }
  i++;
}

ClosedXML 是否支持像上面的 GetColumnLetter() 函数这样的东西,这样我就不必对列字母进行硬编码?

当然,使用 CellsUsed collection 上的谓词获取您想要的单元格 headers,然后 return 列中的列字母.

public string GetColumnName(IXLTable table, string columnHeader)
{
    var cell = table.HeadersRow().CellsUsed(c => c.Value.ToString() == columnHeader).FirstOrDefault();
    if (cell != null)
    {
        return cell.WorksheetColumn().ColumnLetter();
    }
    return null;
}

对于版本 0.95.4.0,我执行了后续步骤

var ws = wb.Worksheet("SheetName");

var range = ws.RangeUsed();
var table = range.AsTable();

var cell = table.FindColumn(c => c.FirstCell().Value.ToString() == yourColumnName);
if (cell != null)
{
     var columnLetter = cell.RangeAddress.FirstAddress.ColumnLetter;
}