RSS
 

Excel-Dateien in DataSet laden

Veröffentlicht am Oktober 11, 2007 um 6:27 pm

11 Okt
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 &lt;= 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 &lt;= 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;
 

Hinterlassen Sie eine Nachricht