Преобразование содержимого табличного объекта DataGridView в CSV в C#

Преобразование содержимого табличного объекта DataGridView в CSV в C#

Преобразование содержимого табличного объекта DataGridView в CSV в C#

Доброго времени суток! Сегодня в статье мы рассмотрим с Вами как экспортировать данные
из таблицы DataGridView в формат CSV
.

Элемент DataGridView в C# — это элемент пользовательского интерфейса, который предоставляет настраиваемую таблицу для отображения данных.

Код примера:



// это extension-метод, т.е. метод расширение, который мы можем вызывать на объекте класса DataGridView через точку

public static void WriteToCSVFile(this DataGridView gridView, char seperator, string filename, Encoding encoding)

{

    using (var writer = new StreamWriter(filename, false, encoding))

    {



        for (int i = 0; i < gridView.Columns.Count; i++)

        {

            // пропускаем колонки таблицы, которые скрыты

            if (!gridView.Columns[i].Visible) continue;



            // записываем заголовок таблицы в файл

            writer.Write(gridView.Columns[i].HeaderText);



            // пока не достигли последней колонки в строке

            if (i < gridView.Columns.Count - 1)

            {

                // вставляем разделитель

                writer.Write(seperator);

            }

        }



        // добавляем перевод строки

        writer.Write(Environment.NewLine);





        // проходимся по каждой строчке

        foreach (DataGridViewRow dr in gridView.Rows)

        {

            for (int i = 0; i < gridView.Columns.Count; i++)

            {

                // пропускаем колонки таблицы, которые скрыты

                if (!gridView.Columns[i].Visible) continue;



                // записываем значение ячейки строки в файл

                writer.Write(dr.Cells[i].Value);



                // пока не достигли последней колонки в строке

                if (i < gridView.Columns.Count - 1)

                {

                    // вставляем разделитель

                    writer.Write(seperator);

                }

            }



                // добавляем перевод строки

            writer.Write(Environment.NewLine);

        }



        writer.Flush();

    }

}



Используем так:



// запускаем задачу в отдельном потоке, так как операция экспорта может занять 

// длительное время

Task.Run(() =>

{

    // вызываем метод-расширение через точку на объекте QueryResultDataGridView

    // кодировка файла будет Win-1251

    QueryResultDataGridView.WriteToCSVFile(';', "export.csv", Encoding.GetEncoding(1251));



    DialogResult dialogResult = MessageBox.Show(

        "Экспорт завершен! Вы хотите открыть файл в редакторе?",

        Text, MessageBoxButtons.YesNo, MessageBoxIcon.Information

    );



    // если ок, открываем в редакторе данного типа файлов в Вашей ОС по умолчанию

    if (dialogResult == DialogResult.Yes)

    {

        Process.Start("export.csv");

    }

});



Таким образом, с помощью метода расширения WriteToCSVFile из DataGridView можно экспортировать в CSV относительно большие файлы, насчитывающие от нескольких сотен до несколько сотен тысяч строк.

Источник

НЕТ КОММЕНТАРИЕВ

Оставить комментарий