Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ClosedXML中,是否仍然可以从列标题名称中获取列字母?_C#_Closedxml - Fatal编程技术网

C# 在ClosedXML中,是否仍然可以从列标题名称中获取列字母?

C# 在ClosedXML中,是否仍然可以从列标题名称中获取列字母?,c#,closedxml,C#,Closedxml,我有一个excel工作表,它有列标题,我不想硬编码列字母或索引,所以我试图找出如何使其动态化。我在找这样的东西: var ws = wb.Worksheet("SheetName"); var range = ws.RangeUsed(); var table = range.AsTable(); string colLetter = table.GetColumnLetter("ColHeader"); foreach (var row in ta

我有一个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
集合上的谓词获取所需的单元格,然后从列返回列字母

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;
}

缺少这个IXLTable作为第一个参数我不理解这个例子,你能告诉我如何实现它吗?