Laden...

CSV in DataTable einlesen / Vista

Erstellt von honkman16 vor 15 Jahren Letzter Beitrag vor 15 Jahren 2.524 Views
H
honkman16 Themenstarter:in
87 Beiträge seit 2007
vor 15 Jahren
CSV in DataTable einlesen / Vista

Ich habe eine Windows Applikation die liest ein CSV File in eine DataTable ein. Der Code dafür sieht wie folgt aus:

FileInfo fileInfo = new FileInfo(path);
string connectionString = String.Format("Driver={{Microsoft Text Driver (*.txt; *.csv)}};Dbq={0};", fileInfo.DirectoryName);
OdbcConnection connection = new OdbcConnection(connectionString);
OdbcDataAdapter da = new OdbcDataAdapter(String.Format("select * from [{0}]", fileInfo.Name), connection);
da.Fill(dataTable);

Das hat bis jetzt immer ohne Probleme funktioniert und ist sehr schnell. Jetzt bin ich vor kurzem auf Vista umgestiegen. Dort gehts das nicht mehr. Fast immer wird nur die erste Spalte (Column) importiert, der Rest nicht. Fehler wird auch keiner geworfen.

Führe ich den gleichen Code auf meinem XP Rechner aus, funktioniert er ohne Probleme und das komplette CSV File wird geladen. Unter Vista Ultimate wie gesagt nicht.

Kenn jemand das Problem bzw. eine Lösung darfür?

26 Beiträge seit 2009
vor 15 Jahren

Hallo honkman 16,

Bei mir funktioniert der Code anstandslos (Windows Vista Ultimate).

Folgender Code könnte jedoch eine Alternative dazu sein, um auch mal endlich die ODBC Geschichte Vergangenheit werden zu lassen.

           
FileInfo fileInfo = new FileInfo(@"C:\Demo1.csv");
            
string connectionString = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"text;HDR=YES;Format=Delimited(|)\";", fileInfo.DirectoryName);
            
OleDbConnection odbcConnection = new OleDbConnection(connectionString);
OleDbDataAdapter odbcDataAdapter = new OleDbDataAdapter(String.Format("select * from [{0}]", fileInfo.Name), odbcConnection);

DataTable dataTable = new DataTable("Demo1");
            
odbcDataAdapter.Fill(dataTable);

dataTable.WriteXml(@"C:\demo1.xml", false);

Die ultimative Lösung ist dieser Weg jedoch nicht, CSV-Dateien mit Hilfe eines OLEDB- bzw. ODBC Treibers auszuwerten. Beispielsweise fehlt mir die Möglichkeit, den Importzeichensatz angeben zu können.

Gruß,
Thomas van Veen

H
honkman16 Themenstarter:in
87 Beiträge seit 2007
vor 15 Jahren

Danke für die Hilfe. Mit OLEDB habe ich es auch schon versucht. Ohne Erfolg. Werde mir wohl einen eigenen Parser schreiben müssen 😦((

Grüße
Honkman

F
10.010 Beiträge seit 2004
vor 15 Jahren

Wieso?

Es gibt doch schon tausende Fertige.
Geh mal auf codeproject und such mal nach "fast csv reader"