Ich verwende OleDb, um aus einer Excel-Arbeitsmappe mit vielen Blättern zu lesen.
Ich muss die Blattnamen lesen, aber ich brauche sie in der Reihenfolge, in der sie in der Tabelle definiert sind. Also, wenn ich eine Datei habe, die so aussieht;
|_____|_____|____|____|____|____|____|____|____|
|_____|_____|____|____|____|____|____|____|____|
|_____|_____|____|____|____|____|____|____|____|
\__GERMANY__/\__UK__/\__IRELAND__/
Dann muss ich das Wörterbuch bekommen
1="GERMANY",
2="UK",
3="IRELAND"
Ich habe versucht, zu verwenden OleDbConnection.GetOleDbSchemaTable()
, und das gibt mir die Liste der Namen, aber es sortiert sie alphabetisch. Die Alpha-Sortierung bedeutet, dass ich nicht weiß, welcher Blattnummer ein bestimmter Name entspricht. Also bekomme ich;
GERMANY, IRELAND, UK
das hat die Reihenfolge von UK
und geändert IRELAND
.
Der Grund, warum ich es sortieren muss, ist, dass ich den Benutzer einen Datenbereich nach Name oder Index auswählen lassen muss; Sie können nach "allen Daten von DEUTSCHLAND nach IRLAND" oder "Daten von Blatt 1 nach Blatt 3" fragen.
Irgendwelche Ideen wären sehr dankbar.
Wenn ich die Office-Interop-Klassen nutzen könnte, wäre dies unkompliziert. Leider kann ich das nicht, da die Interop-Klassen in nicht interaktiven Umgebungen wie Windows-Diensten und ASP.NET-Sites nicht zuverlässig funktionieren. Daher musste ich OLEDB verwenden.