【问题标题】:Linq to Excel, get column names from CSV fileLinq to Excel,从 CSV 文件中获取列名
【发布时间】:2018-03-01 09:59:53
【问题描述】:

我需要使用 LINQ to Excel 获取 CSV 文件的列标题

我使用https://github.com/paulyoder/LinqToExcel上指定的代码

这适用于 .XLSX 文件,但不适用于 CSV

           //Select File

        var book = new LinqToExcel.ExcelQueryFactory(link + @"\" + fileName);

           //Select firtworkbook
        var query = (from row in book.Worksheet(0) select row).ToList();
        var workSheetName = book.GetWorksheetNames();
        var columnNames = (from row in book.GetColumnNames(workSheetName.FirstOrDefault()) select row).ToList();

我还尝试对工作表名称进行硬编码并调用 CSV sheet1

        var columnNames = (from row in book.GetColumnNames("Sheet1") select row).ToList();

这会中断并给我这个错误:

 Message = "'54733658.csv' is not a valid worksheet name in file...

我仔细检查了它是正确的路径。

然后我尝试了:(它需要与文件名相同的工作表名称 - 扩展名)

        string extension = System.IO.Path.GetExtension(fileName);
        string result = fileName.Substring(0, fileName.Length - extension.Length);
        var colNames = book.GetColumnNames(result, "A1:F1").ToList();

这给了我以下错误:

The Microsoft Jet database engine could not find the object '02119249$A1_Z1.txt'.  Make sure the object exists and that you spell its name and the path name correctly.

我在谷歌上搜索了那些结果不适用的错误。

【问题讨论】:

  • 尝试将 csv 文件添加到您的项目文件系统并使用 LinqToExcel.ExcelQueryFactory(fileName);
  • @abr 我需要上传 excel 文件

标签: excel linq linq-to-excel


【解决方案1】:

我没有足够的时间弄清楚为什么我无法读取 CSV 列标题

对于那些有同样问题的人:

读取第一行并列出字符串,这是我的方法:

    public List<string> ColumnNameGenerator(string FilePath)
    {

        string firstLine = "";
        using (StreamReader reader = new StreamReader(FilePath))
        {
            firstLine = reader.ReadLine() ?? "";
        }

        return firstLine.Split(',').ToList();
    }

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2014-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多