-
Guten Tag Meister der Tutorials!
Wie viele die hier schreiben habe ich ich Problem....
Alsooo....
Ich habe ein Programm das mehrere Excel(xls) Dateien zu einer zusammenfasst.
Dazu lade ich die Daten mittels OleDb in eine DataTable.
Dann schreibe ich die Daten in eine xml und diese wandle ich in eine .xls um.
Das Problem ist nun, dass wenn in Spalten nur Zahlen sind, die erste Reihe nicht übernommen wird, also wenn in Spalte A nur Zahlen sind dann fehlt in der Zelle A1 der Inhalt.
Dieser fehler entsteht schon an der Stelle, an der die Daten in die DataTable geschrieben werden. Dort hat diese Zelle den value DBNull, obwohl sie gar nicht leer ist!
Es liegt auch nicht an der Datei, da dies bei mehreren der Fall ist.
Gibt es jemanden der mir helfen kann?
Hier ist der Code der die xls in die DataTable schreibt.:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
Private Function GetExcelDataSet(ByVal excelFile As String, ByVal headers As Boolean) As DataSet Dim ds As New DataSet() Dim con As New OleDbConnection() con.ConnectionString = "Data Source=" & excelFile & ";Provider=Microsoft.Jet.OLEDB.4.0;" If headers Then con.ConnectionString += "Extended Properties=""Excel 8.0;HDR=Yes""" Else con.ConnectionString += "Extended Properties=""Excel 8.0;HDR=No""" End If con.Open() Dim sheets As DataTable = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, "TABLE"}) For Each sheet As DataRow In sheets.Rows Dim tableName As String = sheet("Table_Name").ToString() Dim sql As String = "SELECT * FROM [" & tableName & "]" Dim adap As New OleDbDataAdapter(sql, con) adap.Fill(ds, "DBASE") If zaehler > 0 Then ds.Tables("DBASE").Rows.RemoveAt(0) End If Next con.Close() Return ds End Function
Und natürlich:
Vielen Dank für euer Intresse wenn ihr es lest und noch mehr Dank wenn ihr mir helft
Ok mitlerweile habe ich herausgefunden, dass es daran liegt da in der Spalte mehrere Dateitypen vorkommen.
Bei dem Select guckt er dann welcher Datentyp am meisten vertreten ist und alle Zellen die einen anderen Typ enthalten bekommen den Wert System.DBNull...
So wie ich das verstanden habe muss ich bei dem Select den Dateitypen den er nehmen soll vorgeben.... wie weiß ich noch nicht.. ich halte euch auf dem laufenden.Geändert von CShark (25.11.11 um 11:35 Uhr) Grund: Neue Infos
-
Hey,
hoffe Du hast schon eine Lösung gefunden, aber wenn nicht, werden in der Regel Parameter verwendet um das ganze streng typisiert zu implementieren.
Hier ein Link dazu:
http://msdn.microsoft.com/de-de/libr...0%29.aspx#Y115
Viele Grüße,
VScan
-
Hey hey,
naja also ich habe schon eine Lösung gefunden, aber di eist nicht ganz "sauber"...
Ich lese die .xls ohne die Header aus.
Die Überschriften hole ich mir dann indem ich die .xls in eine .csv umschreibe.
Alle Daten der ganzen .xls Dateien sind dann in der DataTable und werden zusammen mit den Überschriften weggeschrieben.
MfG,
CShark
-
Heureka!
Soooo jetzt habe ich das ganze endgültig gelöst!
Nochmal Danke VScan durch dich hab ich mein Problem richtig und besser lösen können.
Ich schreibe jetzt nichts mehr in CSVs oder sonstiges.
Das Zusammenfassen funktioniert, da das umschrieben in die CSVs wegfällt, auch nur noch einen Bruchteil des vorherigen und die Überschriften sind trotzdem dabei. Die längste Zeit beansprucht immernoch das Schreiben der Datensätze in die neue Datei, das habe ich denke ich aber auch optimiert... viel mehr geht da glaube ich nicht.
Ein kleines Beispiel:
Ich habe Excel Dateien mit insgesamt 393.193 Datensätzen zusammengefügt und dafür 11:41,340 Minuten gebraucht.Geändert von CShark (13.12.11 um 14:27 Uhr)
Ähnliche Themen
-
Excel API - Sheets übergeben
Von airBullmer im Forum Java GrundlagenAntworten: 13Letzter Beitrag: 31.01.11, 15:25 -
Excel Sheets auslesen
Von Soilder im Forum Visual Basic 6.0Antworten: 17Letzter Beitrag: 21.07.10, 12:39 -
[Excel/VBA] Dynamisch Hyperlinks zu Sheets erstellen
Von timgkeller im Forum Office-AnwendungenAntworten: 3Letzter Beitrag: 03.09.08, 09:16 -
ASP.NET, C#: Excel Sheets einlesen und wieder exportieren
Von silmepurpurdrache im Forum .NET Web und KommunikationAntworten: 5Letzter Beitrag: 28.08.07, 19:36 -
VBA Excel - Mehrere Sheets kopieren
Von Doni im Forum Visual Basic 6.0Antworten: 3Letzter Beitrag: 23.12.04, 17:09



1Danke

Zitieren
Login





