C#, asp net.ajax разработка web-приложений, Javascript CSS
 
Задать вопрос asp.net ajax C#

Рубрики


Статьи


Подписка


Подписаться по RSS

Архив

 Полный архив по категориям

Популярные записи


Мои рекомендации



# Wednesday, July 09, 2008

Формат СSV файла

CSV файл это обычный текстовый файл в котором данные разделены на строки, а элементы в строке отделены запятыми и могут быть взяты в кавычки. Иногда первой строкой идут заголовки колонок, что бы можно было обращаться к полю по имени. Часто в CSV файле разделителем становится точка с запятой ( ; ) а кавычки могут быть одинарными. Кавычки применяют в том случае, если текст содержит запятую. Если текст взят в кавычки а внутри текста есть кавычка, то она заменяется двойной кавычкой. А вот если в строке нужен символ переноса…

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

Как и чем открыть файл в формате CSV?

Для чтения CSV файла вам нужно будет скачать библиотеку CSVReader, исходники которой когда то были взяты мной на CodeProject. Подключаем референс к вашему проекту и пользуем её :)

Приведу несколько примеров использования библиотеки CSVReader

string[] headers;
const bool hasHeader = true;
const string fileName = "D:\\Test.csv";
int fieldCount;

CsvReader csv = new CsvReader(new StreamReader(fileName), hasHeader);
headers = csv.GetFieldHeaders();
fieldCount = csv.FieldCount;
while (csv.ReadNextRecord())
{
    for(int i=0; i<fieldCount; i++)
        Console.WriteLine("{0} = {1}", headers[i], csv[i]);
    Console.WriteLine("---");
}

В этом примере файл имеет заголовок и значения полей выводятся последовательно, вместе с их именами взятыми из headers. К значению можно обращаться как по индексу (например csv[1]), так и по имени поля (например csv["Weight"])

Естественно, все значения строковые, и приводить к нужному ипу вам придётся методом Parse

Если используются нестандартные служебные символы-разделители, то их нужно указать в конструкторе. Там же указывается экранирующий символ  (по-умолчанию кавычка), символ конца строки, признак коментария (если строка начинается с этого символа, то она будет игнорирована). Помимо этого можно указать размер буфера для чтения и  включить обрезку пробельных символов по краям строки.

Name
E-mail

Comment (HTML not allowed)  

Enter the code shown (prevents robots):

Live Comment Preview