2010-09-08 1 views
6

Ich versuche, ein Importprogramm von CSV zu erstellen.Ein Artikel mit dem gleichen Schlüssel wurde bereits hinzugefügt - csvreader.fieldcount

Mein Code ist

csv = New CsvReader(New StreamReader("CSVFileLocation"), True) 
Dim fieldCount As Integer = csv.FieldCount 

Die Fehlermeldung „ein Element mit demselben Schlüssel wurde bereits hinzugefügt.“ in der zweiten Zeile. Wenn ich "HasReaders" zu "False" änderte, gibt es keinen solchen Fehler. Aber ich kann die Header nicht bekommen.

Könnte mir bitte jemand helfen?

FYI: Ich verwende Visual Studio 2010 Version.

Grüße, Richard

Antwort

6

Überprüfen Sie, ob Ihre CSV-Dateinamen doppelte Spalte haben kann, oder mehrere leere Zellen, in der Kopfzeile?

Wenn das der Fall ist, versuchen Sie, Ihr csv-Objekt durchzulaufen, und versuchen Sie, die Header in Code umzubenennen, bevor Sie die Eigenschaft FieldCount aufrufen.

+1

Vielen Dank für Ihre Hilfe. Entschuldigung für meine verspätete Antwort, als ich auf Urlaub war. Jetzt konnte ich das Problem lösen. Es ist wegen der "Mehrere leere Zellen" in der CSV-Datei. Grüße, Richard – Richard

+1

Das Problem "mehrere leere Zellen" tritt auch auf, wenn die Kopfzeile vollständig fehlt. Der Leser versucht dann, Ihre erste Datenzeile als Spaltennamen zu interpretieren. In meinem Fall hatte ich mehrere Spalten mit einem Datenwert von "0", die den Fehler verursacht haben. –

1

Meine Vermutung ist, dass die CsvReader Klasse die erste Zeile durchläuft Zeichenfolgen zu einem Wörterbuch hinzufügen, und die Überschriftenzeile hat zwei Zellen mit dem gleichen Wert (also zwei identisch benannte Felder). Sehen Sie sich Ihre Daten an und prüfen Sie, ob dies der Fall ist. Wenn Sie alternativ Zugriff auf den Quellcode für CsvReader haben, können Sie diesen Fall behandeln, indem Sie das zweite Feld etwas anders benennen (z. B. durch Anhängen einer "1" an das Ende des Namens).

+0

Quellcode hier verfügbar - http://www.codeproject.com/KB/database/CsvReader/CsvReader_src.zip – Justin

Verwandte Themen