C# 在ClosedXML中,是否仍然可以从列标题名称中获取列字母?
我有一个excel工作表,它有列标题,我不想硬编码列字母或索引,所以我试图找出如何使其动态化。我在找这样的东西: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
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作为第一个参数我不理解这个例子,你能告诉我如何实现它吗?