Schneller als über Interop lassen sich Informationen über eine Exceldatei über OleDb auslesen. Benötigt wird die Methode GetOleDbSchemaTable des OleDbConnection-Objekts.
Über die Klasse OleDbSchemaGuid und den entsprechenden Einschränkungen wird angegeben, welche Informationen man haben möchte.
private string[] GetColumnNames(string excelFile, string worksheetName)
{
// Namen der Excel-Arbeitsblätter enden immer mit $ ("Tabelle1$")
if (!worksheetName.EndsWith("$"))
{
worksheetName = worksheetName + "$";
}
OleDbConnection con = new OleDbConnection();
con.ConnectionString = "Data Source=" + excelFile +
";Provider=Microsoft.Jet.OLEDB.4.0" +
";Extended Properties=Excel 8.0";
con.Open();
DataTable tab = con.GetOleDbSchemaTable(
OleDbSchemaGuid.Columns,
new object[] {null, null, worksheetName, null});
con.Close();
string[] columnNames = new string[tab.Rows.Count];
for (int i = 0; i < tab.Rows.Count; i++)
{
columnNames[i] = tab.Rows[i]["Column_Name"].ToString();
}
return columnNames;
}
Kommentare zum Snippet