所有页面列的名称

问题描述

如何使用 ClosedXML 获取 Excel 表中所有已使用列的列表?这就是为所有单元格发布列的方式。我没有找到适合列的方法

var cells = source_sheet.CellsUsed();
foreach (var c in cells)
{}

像这样拉出用过的扬声器。但它看起来像...不是真的 =)

List<string> names = new List<string>();
var cells = sheet.CellsUsed();
foreach(var c in cells)
{
    if (names.Contains(c.Address.ColumnLetter))
        break;
    else
        names.Add(c.Address.ColumnLetter);
}

解决方法

如果您的数据确实在定义的 Excel 表格 中,那么您可以按如下方式返回字段名称:

using var wb = new XLWorkbook("test.xlsx");
var ws = wb.Worksheets.First();

var table = ws.Tables.First();
var names = table.Fields.Select(f => f.Name).ToList();

foreach (var name in names)
    Console.WriteLine(name);

如果您的数据只是在常规单元格中,您可以这样做:

using var wb = new XLWorkbook("test.xlsx");
var ws = wb.Worksheets.First();

var names = ws.ColumnsUsed().Select(c => c.Cell(rowNumber: 1).GetString()).ToList();

foreach (var name in names)
    Console.WriteLine(name);