C # lu dans le file Excel

Je souhaite get datatables d'un file excel (de A2-A28 -> première colonne) dans mon programme C #. Mon code ressemble à ceci:

using System.IO; using Excel = Microsoft.Office.Interop.Excel; private void btnEinlesen1_Click(object sender, EventArgs e) { ofd.Filter = "Excel (*.xls;*.xlsx)|*.xls;*.xlsx;|" + "All files (*.*)|*.*"; ofd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal); ofd.Title = "Exceldatei öffnen"; ofd.FileName = ""; DialogResult dr = ofd.ShowDialog(); if (dr == DialogResult.OK) { Excel.Application xlApp; //Excel starten Excel.Workbook xlWorkBook; // Dokument anlegen Excel.Worksheet xlWorkSheet; // Blatt anlagen object misValue = System.Reflection.Missing.Value; xlApp = new Excel.Application(); xlWorkBook = xlApp.Workbooks.Open(ofd.FileName, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); //Zugriff auf erstes Sheet ssortingng aux = ""; for (int i = 2; i <= 28; i++) { aux += xlWorkSheet.get_Range("A" + i.ToSsortingng(), "A" + i.ToSsortingng()).Value.toSsortingng() + "/"; } aux.ToArray(); //wandelt ssortingng aux in ein array um MessageBox.Show(aux.ToSsortingng()); xlWorkBook.Close(true, misValue, misValue); xlApp.Quit(); releaseObject(xlWorkSheet); releaseObject(xlWorkBook); releaseObject(xlApp); } } private void releaseObject(object obj) { try { System.Runtime.InteropServices.Marshal.ReleaseComObject(obj); obj = null; } catch (Exception ex) { obj = null; MessageBox.Show("Unable to release the Object " + ex.ToSsortingng()); } finally { GC.Collect(); } } } 

}

Mais à chaque fois que je lis dans le file excel (où A2-A28 est plein avec des nombres), j'ai une erreur:

entrez la description de l'image ici

quel est le problème?

Il n'est pas nécessaire de boucler avec la méthode get_Range .

Retirer

 ssortingng aux = ""; for (int i = 2; i <= 28; i++) { aux += xlWorkSheet.get_Range("A" + i.ToSsortingng(), "A" + i.ToSsortingng()).Value.toSsortingng() + "/"; } aux.ToArray(); //wandelt ssortingng aux in ein array um 

Et ajoutez simplement ceci:

 Excel.Range xlRange = xlWorkSheet.get_Range("A2:A28", System.Reflection.Missing.Value); System.Array dataArray = (System.Array)(xlRange.Cells.Value2); 

http://aspxdeveloper.blogspot.com.au/2013/03/read-excel-file-in-c.html

 protected void BtnReadExcel_Click(object sender, EventArgs e) { try { OleDbConnection con = new OleDbConnection(" Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Server.MapPath("TestExcel.xlsx") + "; Extended Properties='Excel 8.0;HDR=Yes;'" ); OleDbDataAdapter da = new OleDbDataAdapter("select * from [Sheet1$]", con); DataSet ds = new DataSet(); da.Fill(ds); } catch (Exception ex) { throw; } } ); protected void BtnReadExcel_Click(object sender, EventArgs e) { try { OleDbConnection con = new OleDbConnection(" Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Server.MapPath("TestExcel.xlsx") + "; Extended Properties='Excel 8.0;HDR=Yes;'" ); OleDbDataAdapter da = new OleDbDataAdapter("select * from [Sheet1$]", con); DataSet ds = new DataSet(); da.Fill(ds); } catch (Exception ex) { throw; } }