На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

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 - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.



тегистатьи IT, си шарп, csv, задачи





Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Дежавю
Урок 14. Метод public static void main


© upread.ru 2013-2020
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.