Ответ 1
CsvReader - довольно неплохо... это не Microsoft, но работает очень хорошо, и намного быстрее чем некоторые из альтернатив (устаревший OleDb и т.д.).
Возможный дубликат:
Импорт файлов CSV в .Net
В .net есть ли стандартная библиотека, которая должна использоваться для чтения в csv файлах? Все образцы в Интернете загружают свой собственный считыватель/парсер csv или используют OleDb.
Это не проблема с использованием каких-либо из этих решений, мне просто интересно, есть ли общепринятая библиотека (не то, что я могу найти), или любой другой "правильный" способ сделать это?
CsvReader - довольно неплохо... это не Microsoft, но работает очень хорошо, и намного быстрее чем некоторые из альтернатив (устаревший OleDb и т.д.).
В пространстве имен VB есть класс TextFieldParser. Я знаю, С# людям не нравится ссылаться на библиотеку с этого "базового" языка, но это неплохо.
Он расположен в Microsoft.VisualBasic.FileIO.TextFieldParser
Раньше я работал с OLEDB, создавал файлы определения столбцов и т.д., но нашел TextFieldParser очень простым и удобным инструментом для разбора любых файлов с разделителями.
Одна из причин, по которой многие пишут сами, состоит в том, что CSV не так просто. Например:
Вот некоторые из причин, по которым люди пишут свои собственные парсеры, потому что они застряли в чтении файлов, созданных со всеми этими разными настройками. Или они пишут собственные сериализаторы, потому что у целевой системы есть куча этих особенностей.
Если вас не волнуют эти проблемы, просто используйте самую удобную библиотеку. Но поймите, что они там.
Попробуйте CsvHelper (библиотека, которую я поддерживаю). Он также доступен через NuGet.
CsvHelper позволяет вам читать ваш CSV файл непосредственно в вашем пользовательском классе.
var streamReader = // Create a reader to your CSV file.
var csvReader = new CsvReader( streamReader );
List<MyCustomType> myData = csvReader.GetRecords<MyCustomType>();
CsvReader автоматически определит, как сопоставить имена свойств на основе строки заголовка (это настраивается). Он использует скомпилированные деревья выражений вместо отражения, поэтому он очень быстрый.
Он также очень расширяемый и настраиваемый.
После еще нескольких исследований есть также: http://www.filehelpers.com/
Кажется, полная структура вокруг файлов чтения, а не только файлы csv.
(заметьте: просто прочитайте материал на веб-сайте, еще не использовали его)
KBCsv - это еще один вариант, особенно если вам нужна эффективность и способность работать с массивными CSV файлами.
Раскрытие: я написал KBCsv, следовательно, "KB";)
Я уверен, что вы можете прочитать CSV файл в DataTable с одной строкой кода. После этого в DataTable вы можете сортировать, фильтровать, повторять и т.д.
В этом вопросе есть примеры для чтения CSV в DataTables.