GetColumnName()用于csv文件的LinqToExcel抛出错误Microsoft Jet数据库引擎找不到对象' Sheet1 $ .txt'

时间:2016-04-21 10:34:56

标签: c# csv linq-to-excel

我正在使用linqToExcel dll来读取csv文件并查询csv文件中的数据。我还需要来自csv的列(Header)的名称。

当我尝试按照document mentioned

运行以下代码时

抛出错误信息如下:

Microsoft Jet数据库引擎无法找到对象' Sheet1 $ .txt'。确保对象存在,并且您正确拼写其名称和路径名称。

我的代码如下:

string pathToExcelFile = ""
        + @"c:\users\rahul\documents\visual studio 2013\Projects\WebApplication1\WebApplication1\csv\student.csv";

            string sheetName = "student";

            var excelFile = new ExcelQueryFactory(pathToExcelFile);

            //get all sheet names 
            var sheetNames = excelFile.GetWorksheetNames();

            //get column name from csv 
            var columnNames = excelFile.GetColumnNames(sheetName);

为了获得正确的工作表名称,我尝试使用excelFile.GetWorksheetNames()但它返回零记录。

注意:我正在使用csv文件,当我在MS Excel中打开相同的csv文件时,它会显示给我 学生作为工作表名称,即使我也尝试使用sheet1。

1 个答案:

答案 0 :(得分:3)

这是我的解决方案。

IEnumerable<string> columnNames;
var workSheetName = excel.GetWorksheetNames().FirstOrDefault();
if (string.IsNullOrEmpty(workSheetName))
{
    //For CSV files there are not worksheet names
    var worksheet = excel.Worksheet();
    if (worksheet == null)
    {
        throw new ApplicationException("Unable to extract data. The file contains no data");
    }
    var row = worksheet.FirstOrDefault();
    if (row == null)
    {
        throw new ApplicationException("Unable to extract data. The file contains no rows");
    }
    columnNames = row.ColumnNames;

}
else
{
    columnNames = excel.GetColumnNames(workSheetName);
}

if (columnNames == null || !columnNames.Any())
{
    throw new ApplicationException("Unable to extract column information.");
}