Есть ли по умолчанию / официальный / рекомендуемый способ анализа файлов CSV в C #? Я не хочу катить свой собственный парсер.
Кроме того, я видел случаи, когда люди использовали ODBC / OLE DB для чтения CSV через драйвер текста, и многие люди препятствовали этому из-за его «недостатков». Каковы эти недостатки?
В идеале я ищу способ, с помощью которого я могу прочитать CSV по имени столбца, используя первую запись в качестве имени заголовка / поля. Некоторые из приведенных ответов являются правильными, но работают для десериализации файла в классы.
Парсер CSV теперь является частью .NET Framework.
Добавьте ссылку на Microsoft.VisualBasic.dll (прекрасно работает в C #, не берите в голову название)
Документы здесь - класс TextFieldParser
PS Если вам нужен экспортер CSV , попробуйте CsvExport (диск: я один из авторов)
источник
TextFieldParser.ReadLine()
. См. Документацию TextFieldParserCsvHelper (библиотека, которую я поддерживаю) будет читать файл CSV в пользовательских объектах.
Иногда вам не принадлежат объекты, которые вы пытаетесь прочитать. В этом случае вы можете использовать свободное отображение, потому что вы не можете поместить атрибуты в класс.
РЕДАКТИРОВАТЬ:
CsvReader теперь требует, чтобы CultureInfo передавался в конструктор ( https://github.com/JoshClose/CsvHelper/issues/1441 ).
Пример:
источник
В бизнес-приложении я использую проект с открытым исходным кодом на codeproject.com, CSVReader .
Это работает хорошо, и имеет хорошую производительность. По предоставленной мною ссылке есть некоторое сравнение.
Простой пример, скопированный со страницы проекта:
Как видите, с ним очень легко работать.
источник
Я знаю, что немного поздно, но только что нашел библиотеку, в
Microsoft.VisualBasic.FileIO
которой естьTextFieldParser
класс для обработки CSV-файлов.источник
Если вам нужно только чтение CSV-файлов, я рекомендую эту библиотеку: A Fast CSV Reader.
Если вам также нужно генерировать CSV-файлы, используйте эту: FileHelpers
Оба из них являются бесплатными и с открытым исходным кодом.
источник
Вот вспомогательный класс, который я часто использую, на случай, если кто-нибудь когда-нибудь вернется в этот поток (я хотел поделиться им).
Я использую это для простоты переноса на проекты, готовые к использованию:
И используйте это как:
[Обновлен csv helper: исправлена ошибка, при которой последний символ новой строки создавал новую строку]
источник
Это решение использует официальную сборку Microsoft.VisualBasic для анализа CSV.
Преимущества:
Код:
источник
Я написал TinyCsvParser для .NET, который является одним из самых быстрых анализаторов .NET и легко настраивается для анализа почти любого формата CSV.
Выпущено по лицензии MIT:
Вы можете использовать NuGet для его установки. Выполните следующую команду в консоли диспетчера пакетов .
использование
Представьте, что у нас есть список людей в файле CSV
persons.csv
с их именем, фамилией и датой рождения.Соответствующая модель предметной области в нашей системе может выглядеть следующим образом.
При использовании TinyCsvParser вы должны определить соответствие между столбцами в данных CSV и свойством в модели вашего домена.
И затем мы можем использовать сопоставление для анализа данных CSV с помощью
CsvParser
.Гид пользователя
Полное руководство пользователя доступно по адресу:
источник
Вот моя реализация KISS ...
источник
Некоторое время назад я написал простой класс для чтения / записи CSV на основе
Microsoft.VisualBasic
библиотеки. Используя этот простой класс, вы сможете работать с CSV, как с двухмерным массивом. Вы можете найти мой класс по следующей ссылке: https://github.com/ukushu/DataExporterПростой пример использования:
Для чтения заголовка нужно только прочитать
csv.Rows[0]
ячейки :)источник
Решение с одним исходным файлом для простого анализа, полезно. Имеет дело со всеми неприятными крайними случаями. Например, нормализация новой строки и обработка новых строк в строковых литералах в кавычках. Пожалуйста!
Если у вашего CSV-файла есть заголовок, вы просто считываете имена столбцов (и вычисляете индексы столбцов) из первой строки. Просто как тот.
Обратите внимание, что
Dump
это метод LINQPad, вы можете удалить его, если вы не используете LINQPad.источник
Еще одна в этом списке, Cinchoo ETL - библиотека с открытым исходным кодом для чтения и записи нескольких форматов файлов (CSV, обычный файл, Xml, JSON и т. Д.)
Пример ниже показывает, как быстро прочитать файл CSV (объект POCO не требуется)
Пример ниже показывает, как прочитать файл CSV, используя объект POCO
Пожалуйста, ознакомьтесь со статьями в CodeProject о том, как его использовать.
источник
Основано на посте unlimit о том, как правильно разделить CSV с помощью функции C # split ()? :
ПРИМЕЧАНИЕ: это не обрабатывает экранированные / вложенные запятые и т. Д., И, следовательно, подходит только для некоторых простых списков CSV.
источник
Этот код читает csv в DataTable:
источник
Если кому-то нужен фрагмент кода, он может добавить свой код без необходимости привязывать библиотеку или загружать пакет. Вот версия, которую я написал:
источник
Вот краткое и простое решение.
источник