Microsoft Visual C# и csv
Сегодняшняя статья будет посвящена работе с csv файлами. Начнем, как обычно, с задачи:
Имеется файл .csv c разделителем [tab] в кодировке utf8. Необходимо создать на его основе файл .csv с разделителем "запятая" в формате windows-1251. При этом поменять местами второй и третий столбцы.Вообще говоря, данную задачу можно решить множеством способов: какой бы мы ни взяли язык программирования, в нем есть либо встроенные функции, либо разработанные библиотеки для работы с файлами в формате csv. В данном случае мой выбор пал на хорошо знакомый C#. Приложение будем создавать в Microsoft Visual C#. Итак, код программы. Шаблон - консольное приложение.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace csv01 { class Program { internal static string ConvUTF(string originalStr) { Encoding u8 = Encoding.UTF8; Encoding w1 = Encoding.GetEncoding("Windows-1251"); byte[] utf8Bytes = u8.GetBytes(originalStr); byte[] w1B = Encoding.Convert(u8, w1, utf8Bytes); return w1.GetString(w1B); } static string[] arr; static void Main(string[] args) { if (System.IO.File.Exists("ox22.csv")) File.Delete("ox22.csv"); StreamReader sr = new StreamReader("Code.csv"); StreamWriter csv = new StreamWriter("ox22.csv", true, Encoding.GetEncoding(1251)); while (!sr.EndOfStream) { string vr = sr.ReadLine(); arr = vr.Split(new char[] { '\t' }); csv.WriteLine(ConvUTF(arr[0]) + "," + ConvUTF(arr[2]) + "," + ConvUTF(arr[1]), Encoding.GetEncoding(1251)); } sr.Close(); csv.Close(); } } }Всю программу можно разделить на две части. Первая - это метод ConvUTF (строки 12-19), который занимается тем, что преобразовывает строки из UTF-8 в Windows-1251; причем делает это побайтово. А вот вторая часть программы - основная - уже делает все остальное. В строке 25 проверяем, существует ли уже выходной файл и если да - удаляем его. Это требуется, если программа будет запускаться не один раз, чтобы не возникли проблемы с перезаписью. Строка 26 открывает исходный файл для чтения, а строка 27 - поток для записи. Далее в цикле пробегаем по Code.csv, читаем его построчно в массив и используем функцию split для разбиения (\t - это символ табуляции). Записываем новую строку в новый файл, при этом одновременно конвертируя в 1251 и меняя местами второй и третий столбцы.
Файл Code.csv представляет собой просто таблицу из трех столбцов. Выходной файл ox22.csv также таблица из трех столбцов, но в нем изменена кодировка, разделители и изменены местами столбцы. На основе данного кода можно создавать программы для редактирования файлов в формате csv любой сложности. Именно такая программа скоро и появится у нас на сайте ;)
Вот так с помощью только функций и методов языка C# мы научились работать с файлами csv: изменять их кодировку, разделители, столбцы. Если у вас есть какие-либо вопросы по данному коду, или вообще по C#, или требуется какая-либо программа, то вы можете написать на почту up777up@yandex.ru - вам за небольшое денежное вознаграждение обязательно помогут.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.