2016-04-21 81 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

我一直在尋找這一切!謝謝! –

相關問題