Вы не можете только перенаправить вывод в файл, с помощью эти >
команда?
c:\>Console.exe > c:/temp/output.txt
, Если необходимо зеркально отразить, можно попробовать, находят win32 версию tee
, который разделяет вывод в файл.
Я только что использовал эту библиотеку в своем приложении. http://www.codeproject.com/KB/database/CsvReader.aspx . С этой библиотекой все прошло гладко, поэтому рекомендую. Это бесплатно по лицензии MIT, так что просто включите уведомление с вашими исходными файлами.
Я не отображал CSV в браузере, но у автора есть несколько примеров для Repeaters или DataGrids. Я запустил один из его тестовых проектов, чтобы проверить добавленную мной операцию сортировки, и он выглядел довольно неплохо.
Возможно, вас заинтересует библиотека Linq2Csv на CodeProject . Одна вещь, которую вам нужно будет проверить, заключается в том, что если он читает данные только тогда, когда это необходимо, вам не понадобится много памяти при работе с большими файлами.
Что касается отображения данных в браузере, вы могли бы сделать многое для этого, если бы вы были более конкретны в отношении ваших требований, ответ мог бы быть более конкретным, но вы могли бы сделать:
1. Используйте класс HttpListener, чтобы написать простой веб-сервер (вы можете найти множество примеров в сети для размещения мини-http-сервера).
2. Используйте Asp.Net или Asp.Net Mvc, создайте страницу, разместите ее с помощью IIS.
Это просто для синтаксического анализа 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;
}
}
Похоже, что существует довольно много проектов на CodeProject или CodePlex для анализа CSV. Вот еще один парсер CSV на CodePlex
http://commonlibrarynet.codeplex.com/
В этой библиотеке есть компоненты для синтаксического анализа CSV, синтаксического анализа файлов INI, а также синтаксического анализа командной строки. У меня пока все работает хорошо. Только вот у него нет CSV Writer.
Вы можете попробовать 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 );