Преобразование содержимого табличного объекта 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 относительно большие файлы, насчитывающие от нескольких сотен до несколько сотен тысяч строк.

Источник

Shopping Cart