2010-09-08 13 views
6

Próbuję utworzyć program importu z pliku CSV.Produkt z tym samym kluczem został już dodany - csvreader.fieldcount

Mój kod jest

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

Komunikat o błędzie „Element z tym samym kluczem został już dodany”. w drugiej linii. Jeśli zmieniłem "HasReaders" na "False", nie ma takiego błędu. Ale nie jestem w stanie uzyskać nagłówków.

Czy ktoś może mi w tym pomóc?

FYI: Używam wersji Visual Studio 2010.

Pozdrawiam, Richard

Odpowiedz

6

Sprawdź, czy plik CSV mogą mieć zduplikowanych nazw kolumn lub wiele pustych komórek w wierszu nagłówka?

Jeśli tak jest, spróbuj przepuścić przez swój obiekt csv i spróbuj zmienić nazwy nagłówków w kodzie przed wywołaniem właściwości FieldCount.

+1

Bardzo dziękuję za pomoc. Przepraszam za moją spóźnioną odpowiedź, kiedy byłem na urlopie. Teraz mógłbym rozwiązać problem. Dzieje się tak z powodu "wielu pustych komórek" w pliku CSV. Pozdrawiam, Richard – Richard

+1

Problem "wielu pustych komórek" pojawia się również, gdy w wierszu nagłówka brakuje całkowicie. Czytnik próbuje następnie zinterpretować pierwszy wiersz danych jako nazwy kolumn. W moim przypadku miałem kilka kolumn z wartością danych "0", która spowodowała błąd. –

1

Domyślam się, że klasa CsvReader przechodzi przez pierwszy wiersz dodając ciągi do słownika, a wiersz nagłówka ma dwie komórki o tej samej wartości (więc dwa identycznie nazwane pola). Spójrz na swoje dane i sprawdź, czy tak jest. Alternatywnie, jeśli masz dostęp do kodu źródłowego dla CsvReader, mógłbyś obsłużyć ten przypadek, nazywając drugie pole czymś nieco innym (np. Dodając "1" na końcu jego nazwy).

+0

Kod źródłowy dostępny tutaj - http://www.codeproject.com/KB/database/CsvReader/CsvReader_src.zip – Justin

Powiązane problemy