2017-04-22 25 views
0

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

エクセルファイルに空の** ID **列はありますか?それは空のセルの値をintに変換しようとしているようです –

+0

私はあなたが私を信じていない場合、Excelのファイルを空にしていませんか: – user200544

+0

Excelのシートからレンジオブジェクトに値が来るのですか? –

答えて

0

私が前に発生したエラーは、それはそれのデータを変換することはできませんので、それはその特定のセルのデータ型は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; 
} 
関連する問題