Vorarbeit
- Named Range (Tabellennamen) in Excel definieren (Excel 2007: Bereich markieren->Formeln->Namen definieren)
- die 1. Zeile der Tabelle beinhaltet die Spaltennamen
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(); }