从excel文件读取错误

从excel文件读取错误

问题描述:

我想从Excel文件读取一行。
由于某些原因,当我尝试读取整数值(ID列)时出现错误。从excel文件读取错误

代码的功能是从Excel文件 中读取信息并随后进行存储。

UserInfo实现为数组。
(Excel File Image)

它抛出这个错误:ErrorImage

class UserInfo 
    { 
      public int ID { get; set; } 
      public string firstName { get; set; } 
      public string lastName { get; set; } 
      public string IDNumber { get; set; } 
      public string email { get; set; } 
    } 


    private void openExcelFile(string excelFile) 
    { 
     UserInfo[] user = new UserInfo[2]; 
     label1.Text += "Initalize Excel Application And Reading Data"; 
     ///Read From Excel File And Store in array 
     Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); 
     Workbook xlWorkbook = xlApp.Workbooks.Open(excelFile); 
     _Worksheet xlWorksheet = xlWorkbook.Sheets[1]; 
     Range xlRange = xlWorksheet.UsedRange; 
     int rowCount = xlRange.Rows.Count; 
     //Start to read from row 2 
     for (int i = 2; i <= rowCount; i++) 
     { 
      user[i - 2] = new UserInfo(); 
      Range range1 = xlWorksheet.Rows[i]; 
      user[i - 2].firstName = range1.Cells[i, 1].Value2; 
      user[i - 2].lastName = range1.Cells[i, 2].Value2; 
      user[i - 2].ID = range1.Cells[i, 3].Value2; //Error 
      user[i - 2].email = range1.Cells[i, 4].Value2; 
     } 

     label1.Text += "Done!\nStart Sql Process:\n"; 
     //Cleaning GC,Dealing memory 
     GC.Collect(); 
     GC.WaitForPendingFinalizers(); 
     //close and release 
     xlWorkbook.Close(); 
     Marshal.ReleaseComObject(xlWorkbook); 
     //quit and release 
     xlApp.Quit(); 
    } 
} 
+0

您的Excel文件中是否有任何空的** ID **列?它看起来像你试图将一个空的单元格值转换为int –

+0

否如果你不相信我(: – user200544

+0

值是否从excel表格到范围对象? –

我遇到过是它可能是特定的单元格的数据类型的错误不是INT所以它不能转换的,该数据单元格为int。 您可以尝试使用下面的示例作为解决方法:

Range r = activeWorksheet.get_Range("A3","F3"); 
int d; 
if (r.Cells[3, 5].Value2 != null) 
{ 
    var c = r.Cells[3, 5].Value2.ToString(); 
    d = Convert.ToInt32(c); 
} 
else 
{ 
    d = 0; 
}