Schneller als über Interop lassen sich die Namen der Arbeitsmappen in einer 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[] GetWorksheetNames(string excelFile)
{
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.Tables,
new object[] {null, null, null, "TABLE"});
con.Close();
string[] tableNames = new string[tab.Rows.Count];
for (int i = 0; i < tab.Rows.Count; i++)
{
tableNames[i] = tab.Rows[i]["Table_Name"].ToString();
}
return tableNames;
}
Kommentare zum Snippet