private DataSet LadeExcelInDataSet() { DataSet dsReturn = new DataSet(); if (dlgOpen.ShowDialog() == DialogResult.OK) <span id="more-78"></span> { // Excel als Application initialisieren Microsoft.Office.Interop.Excel.ApplicationClass app = new ApplicationClass(); // Workbook Objekt öffnen Microsoft.Office.Interop.Excel.Workbook workBook = app.Workbooks.Open(dlgOpen.FileName, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); // Aktives Worksheet auswählen Microsoft.Office.Interop.Excel.Worksheet workSheet = (Microsoft.Office.Interop.Excel.Worksheet)workBook.ActiveSheet; // DataTable erstellen dsReturn.Tables.Add(new System.Data.DataTable()); int intColumnCount = 0; // Spalten aus Excel in DataSet anlegen (beginnend mit 1!) // in der 1. Zeile stehen die Überschriften try { for (int x = 1; x <= workSheet.Columns.Count; x++) { if (((Microsoft.Office.Interop.Excel.Range)workSheet.Cells[1, x]).Value2 == null) { break; } DataColumn colNew = new DataColumn(); colNew.ColumnName = ((Microsoft.Office.Interop.Excel.Range)workSheet.Cells[1, x]).Value2.ToString(); colNew.Caption = ((Microsoft.Office.Interop.Excel.Range)workSheet.Cells[1, x]).Value2.ToString(); dsReturn.Tables[0].Columns.Add(colNew); intColumnCount++; } // Ab Zeile 2 Daten auslesen int rowIndex = 2; // Alle Datensätze ab Zeile einlesen while (((Microsoft.Office.Interop.Excel.Range)workSheet.Cells[rowIndex, 1]).Value2 != null) { DataRow drNew = dsReturn.Tables[0].NewRow(); // für jede Zeile jede Spalte auslesen for (int x = 1; x <= intColumnCount; x++) { if (((Microsoft.Office.Interop.Excel.Range)workSheet.Cells[rowIndex, x]).Value2 == null) { drNew[x - 1] = DBNull.Value; continue; } drNew[x - 1] = ((Microsoft.Office.Interop.Excel.Range)workSheet.Cells[rowIndex, x]).Value2.ToString(); } dsReturn.Tables[0].Rows.Add(drNew); rowIndex++; } dsReturn.Tables[0].AcceptChanges(); } catch (Exception ex) { MessageBox.Show("Fehler beim Einlesen der Excel-Datei \n" + ex.Message); } } return dsReturn; }
Und eine Beispiel-Implementation zum Laden einer Excel-Datei in ein GridView der Firma DevExpress
DataSet dsAusExcel = LadeExcelInDataSet(); BindingSource bsDummie = new BindingSource(); bsDummie.DataSource = dsAusExcel; bsDummie.DataMember = dsAusExcel.Tables[0].TableName; grdUpdate.DataSource = bsDummie;
