特定行的LinqToExcel GetColumnNames

时间:2013-10-14 11:19:31

标签: c# asp.net-mvc-4 linq-to-excel

我正在使用库LinqToExcel来读取我的mvc4项目中的excel文件。我的问题是当我尝试阅读第4行的标题时......我怎么能这样做?

在项目中,存在一个返回所有列名的函数,但我想这些列必须在第0行。

    // Summary:
    //     Returns a list of columns names that a worksheet contains
    //
    // Parameters:
    //   worksheetName:
    //     Worksheet name to get the list of column names from
    public IEnumerable<string> GetColumnNames(string worksheetName);

感谢。

2 个答案:

答案 0 :(得分:6)

不幸的是,GetColumnNames()方法仅在标题行位于第1行时才有效。

但是,应该可以使用WorksheetRangeNoHeader()方法获取列名。

它看起来像这样

var excel = new ExcelQueryFactory("excelFileName");
// Only select the header row
var headerRow = from c in excel.WorksheetRangeNoHeader("A4", "Z4")
                select c;

var columnNames = new List<string>();
foreach (var headerCell in headerRow)
  columnNames.Add(headerCell.ToString());

答案 1 :(得分:5)

未来googlers的一个FYI:

自上述答案被接受后,似乎GetColumnNames()已发生变化。

现在有一个重载,您可以将标题行的范围定义为字符串:

 // This will return a List<string> 
 var colNames = ExcelFile
                .GetColumnNames(SheetName, "A9:AF9")
                .ToList();