2010-09-08 6 views
6

Я пытаюсь создать программу импорта из CSV.Элемент с тем же ключом уже добавлен - csvreader.fieldcount

Мой код

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

Сообщение об ошибке «Элемент с уже добавленным тем же ключом.» на второй линии. Если я изменил «HasReaders» на «False», такой ошибки нет. Но я не могу получить заголовки.

Может ли кто-нибудь помочь мне в этом, пожалуйста?

FYI: Я использую версию Visual Studio 2010.

С уважением, Richard

ответ

6

Проверьте, что файл CSV может иметь одинаковые имена столбцов, либо несколько пустых ячеек, в строке заголовка?

Если это так, попробуйте пройти через объект csv и попробуйте переименовать заголовки в коде перед вызовом свойства FieldCount.

+1

Большое спасибо за помощь. Извините за мой запоздалый ответ, когда я был в отпуске. Теперь я могу решить проблему. Это из-за «Несколько пустых ячеек» в CSV-файле. С уважением, Richard – Richard

+1

Проблема «множественных пустых ячеек» также возникает, когда строка заголовка полностью отсутствует. Затем читатель пытается интерпретировать вашу первую строку данных как имена столбцов. В моем случае у меня было несколько столбцов со значением данных «0», которое вызывало ошибку. –

1

Я предполагаю, что класс CsvReader проходит через первую строку, добавляя строки в словарь, а строка заголовка имеет две ячейки с одинаковым значением (так что два одинаково названных поля). Взгляните на свои данные и посмотрите, так ли это. Альтернативно, если у вас есть доступ к исходному коду для CsvReader, вы могли бы обработать этот случай, назвав второе поле чем-то немного другим (например, добавив «1» в конец его имени).

+0

Исходный код доступен здесь - http://www.codeproject.com/KB/database/CsvReader/CsvReader_src.zip – Justin

Смежные вопросы