Чтение файла CSV в.NET?

Вы не можете только перенаправить вывод в файл, с помощью эти > команда?

c:\>Console.exe > c:/temp/output.txt

, Если необходимо зеркально отразить, можно попробовать, находят win32 версию tee, который разделяет вывод в файл.

45
задан MicroVirus 16 March 2016 в 13:38
поделиться

5 ответов

Я только что использовал эту библиотеку в своем приложении. http://www.codeproject.com/KB/database/CsvReader.aspx . С этой библиотекой все прошло гладко, поэтому рекомендую. Это бесплатно по лицензии MIT, так что просто включите уведомление с вашими исходными файлами.

Я не отображал CSV в браузере, но у автора есть несколько примеров для Repeaters или DataGrids. Я запустил один из его тестовых проектов, чтобы проверить добавленную мной операцию сортировки, и он выглядел довольно неплохо.

4
ответ дан 26 November 2019 в 21:07
поделиться

Возможно, вас заинтересует библиотека Linq2Csv на CodeProject . Одна вещь, которую вам нужно будет проверить, заключается в том, что если он читает данные только тогда, когда это необходимо, вам не понадобится много памяти при работе с большими файлами.

Что касается отображения данных в браузере, вы могли бы сделать многое для этого, если бы вы были более конкретны в отношении ваших требований, ответ мог бы быть более конкретным, но вы могли бы сделать:
1. Используйте класс HttpListener, чтобы написать простой веб-сервер (вы можете найти множество примеров в сети для размещения мини-http-сервера).
2. Используйте Asp.Net или Asp.Net Mvc, создайте страницу, разместите ее с помощью IIS.

1
ответ дан 26 November 2019 в 21:07
поделиться

Это просто для синтаксического анализа CSV. Для отображения на веб-странице достаточно взять список и отобразить его так, как вы хотите.

Примечание: Этот пример кода не обрабатывает ситуацию, когда входная строка строка содержит символы новой строки.

public List<string> SplitCSV(string line)
{
    if (string.IsNullOrEmpty(line))
        throw new ArgumentException();

    List<string> result = new List<string>();

    int index = 0;
    int start = 0;
    bool inQuote = false;
    StringBuilder val = new StringBuilder();

    // parse line
    foreach (char c in line)
    {
        switch (c)
        {
            case '"':
                inQuote = !inQuote;
                break;

            case ',':
                if (!inQuote)
                {
                    result.Add(line.Substring(start, index - start)
                        .Replace("\"",""));

                    start = index + 1;
                }

                break;
            }

            index++;
        }

        if (start < index)
        {
            result.Add(line.Substring(start, index - start).Replace("\"",""));
        }

        return result;
    }
}
1
ответ дан 26 November 2019 в 21:07
поделиться

Похоже, что существует довольно много проектов на CodeProject или CodePlex для анализа CSV. Вот еще один парсер CSV на CodePlex

http://commonlibrarynet.codeplex.com/

В этой библиотеке есть компоненты для синтаксического анализа CSV, синтаксического анализа файлов INI, а также синтаксического анализа командной строки. У меня пока все работает хорошо. Только вот у него нет CSV Writer.

1
ответ дан 26 November 2019 в 21:07
поделиться

Вы можете попробовать CsvHelper, это проект, над которым я работаю. Его цель - сделать чтение и запись CSV-файлов как можно проще, при этом очень быстро.

Вот несколько способов чтения из CSV-файла.

// By type
var records = csv.GetRecords<MyClass>();
var records = csv.GetRecords( typeof( MyClass ) );

// Dynamic
var records = csv.GetRecords<dynamic>();

// Using anonymous type for the class definition
var anonymousTypeDefinition =
{
    Id = default( int ),
    Name = string.Empty,
    MyClass = new MyClass()
};
var records = csv.GetRecords( anonymousTypeDefinition );
7
ответ дан 26 November 2019 в 21:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: