C# Oledb excel conneczion

Gast #2559359
Lesenswert?

Hallo zusammen.

Ich habe ein tool, welches Excel-Daten ausliest und diese zur weiteren 
Verarbeitung anbietet. Gelöst über folgenden Code (Ausschnitt):
1
// create new OLEdb connection
2
                OleDbConnection oledbCon = OpenOledbConnection(OledbProvider, filePath);
3
                // get all tables
4
                DataTable sheets = oledbCon.GetOleDbSchemaTable( OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });          
5
                // add all sheets to DataTable
6
                foreach (DataRow sheet in sheets.Rows)
7
                {
8
                    string tableName = sheet["Table_Name"].ToString();
9
                    string sql = "SELECT * FROM [" + tableName + "]";
10
                    OleDbDataAdapter adap = new OleDbDataAdapter(sql, oledbCon);
11
                dap.Fill(ds, tableName);
12
                // close connection
13
                oledbCon.Close();
"ds" ist ein DataSet, der connection string sieht wie folgt aus:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\some.xls;Extended 
Properties="Excel 8.0;HDR=No;IMEX=1"

Problem: das ganze funktioniert NUR so lange die Anzahl der Spalten 
nicht zu groß ist. Jetzt hatte ich den Fall, dass eine Excel-Datei ein 
"korruptes" sheet hatte ( in der Spalte 200... irgendwas stehen, was 
aber keine Nutzerdaten waren ). Dies führt natürlich zu einer Exception 
"zu viele Felder definiert".

Frage:
Kann man die Anzahl der Spalten beim Lesen direkt begrenzen? Ich würde 
am liebsten nämlich trotzdem lesen können und dem User an anderer Stelle 
mitteilen, dass womöglich nicht alle Splten enthalten sind, anstatt dass 
das sheet komplett verworfen wird.
#2560443
Lesenswert?

Martin schrieb:
> Kann man die Anzahl der Spalten beim Lesen direkt begrenzen? Ich würde
> am liebsten nämlich trotzdem lesen können und dem User an anderer Stelle
> mitteilen, dass womöglich nicht alle Splten enthalten sind, anstatt dass
> das sheet komplett verworfen wird.

Wenn korrekte Daten vorliegen läuft alles, wenn ich es richtig 
verstanden habe?

Mach ein vernünftiges Exception-Handling (try ... catch), behandle die 
Fehler entsprechend und alles wird gut.

Das mit dem begrenzen ist keine gute Idee. Welche Grenze willst du 
ziehen? Die korrupten Daten können ja auch mal in Spalte 1 stehen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren