also hallo noch mal,
ich habe folgendes Problem ich möchte die spalten einer Excel Datei zum auswählen anzeigen (z. .b die excel-tabelle hat 3 spalten mit thema1 , thema2, thema3 als erste tabellenzeile, diese möchte ich anzeigen lassen).
public static string[] GetColumnNames(string excelFile, string WorksheetName)
{
.
. Verbindung zur Datei;
.
connect.Open();
System.Data.DataTable tab = connect.GetOleDbSchemaTable(
OleDbSchemaGuid.Columns,
new object[] {null, nul
l, WorksheetName, null});
connect.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;
}
Danke voraus für Eure Antworten und Tipps!
das komischerweise der o.g. code kann nur die spalten von nur einer bestimmten excel-datei anzeigen, und wenn ihc was anderes lade sihet er nur noch NULL als spalten anzahl!!!
muss ich irgendetwas in esxcel-datei einstellen oder gibts zu mindest ne möglichkeit die einstellungen und informationen von der Exce-Datei anzusehen, die funktioniert!!
Hallo,
besteht die Möglichkeit, dass Excel sich bei den Dateien
die nicht funktionieren selbst nicht darüber im Klaren ist,
dass das Worksheet aus einer Tabelle besteht ?
Klingt jetzt zwar doof - aber genauso wie Excel fragt bei der
Aktion "als Tabelle formatieren": Hat die Tabelle Überschriften ?
Guter Indikator hierfür ist der DropDownFilter in den ColumnHeaders.
(So hat eine richtige Tabelle auszusehen...)
Gruß
Achim
hallo danke für eure beiträge, ich habe viel rumprobiert und habe jetzt heraus gefunden wo der hacken ist.
also soweit ich überprüfen konnte kann die OLEDB funktion von oben NUR die Tabellen-Worksheets von alten Excel-Dateien sehen also vor 2000 und alle Tabellen-worksheets die mit Excel 200 und höhere Version erstellt worden sind, werden einfach nicht gelesen und die funktion spuckt dann am ende null tabellen worksheets.
wisst woran es liegen konnte???
public static string[] GetColumnNames(string excelFile, string WorksheetName)
{
OleDbConnection connect = new OleDbConnection();
try
{
connect.ConnectionString = "Data Source=" + excelFile +
";Provider=Microsoft.Jet.OLEDB.4.0" +
";Extended Properties='Excel 8.0;HDR=YES;IMEX=1';";
connect.Open();
}
catch (Exception ex)
{
System.Console.WriteLine("falsch"+ex);
}
/* hier wird überprüft, ob die worksheets gelesen werden. */
System.Data.DataTable neu = connect.GetOleDbSchemaTable(
OleDbSchemaGuid.Tables,
new object[] {null, null, WorksheetName, null});
/* wenn ja spalten lesen und conncetion schliessen . */
return columnNames;
}
also endlich nach einer seeeehr langen zeit habe ich den fehler gefunden, der o.g. code ist zum größten teil richtig. aber bei excel ist so das er am ende der tabellensheetnamen ein $ zeichen sitzt, also muss der obere code so ergänzt werden:
System.Data.DataTable tab = connect.GetOleDbSchemaTable(
OleDbSchemaGuid.Columns,
new object[] {null, null , WorksheetName+"$", null});
gruss arakhsh