2016-04-21 105 views
1

我正在使用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文件时,它显示我 学生为Sheet Name,即使我也尝试过Sheet1。

+0

确保您安装了Microsoft Office Access.Also尝试将sheet1的默认工作表名称更改为其他 – Sunil

+0

您是否找到解决方案? – mayu

回答

2

这是我的解决方案。

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."); 
} 
+1

我一直在寻找这一切!谢谢! –

相关问题