[ADO.Net] Excel 2003 – 2007 Daten lesen und schreiben

Vorarbeit

Codebeispiel

using System;
using System.Data.OleDb;

OleDbConnection con = null;

try
{
    // Excel-Datei, die geöffnet werden soll
    string sExcelFile = "c:\\mytable.xls";
    // Connection-String für Excel 2003
    string sConnString2003 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\""+sExcelFile+"\"; Extended Properties=\"Excel 8.0;HDR=YES;\";";
    // Connection-String für Excel 2007
    string sConnString2007 = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=\""+sExcelFile+"\"; Extended Properties=\"Excel 12.0;HDR=YES;\";";
    // beispielsweise Verbindung zu Excel 2007 herstellen
    con = new OleDbConnection(sConnString2007);
    con.Open();

    // Daten lesen
    // über Named Range
    string sSQL = "SELECT * FROM tabellenname";
    // über Worksheet-Name, wobei die Worksheet den Namen "WorkSheet1" hat
    //sSQL = "SELECT * FROM [WorkSheet1$]";

    OleDbCommand cmd = new OleDbCommand(sSQL, con);
    OleDbDataReader reader = cmd.ExecuteReader();

    while (reader.Read())
    {
        Console.WriteLine("{0}: {1}", reader.GetString(0), reader.GetString(1) ...
    }

    // Daten schreiben
    sSQL = "INSERT INTO tabellenname VALUES('12345', 'Horst')";
    // über Worksheet-Name, wobei die Worksheet den Namen "WorkSheet1" hat
    //sSQL = "INSERT INTO tabellenname VALUES('12345', 'Horst')";
    cmd = new OleDbCommand(sSQL, con);
    cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
    Console.WriteLine(ex.Message);
}
finally
{
    con.Close();
    con.Dispose();
}