0x49D1

0L4g0YDQsNC30YDQsNCx0L7RgtC60LUsINC00LvRjyDRgNCw0LfRgNCw0LHQvtGC0YfQuNC60L7QsiA=

Пример реализации экспорта в CSV (например для открытия в Excel) из WPFToolkit DataGrid


Сегодня понадобилось очень быстро (минут за 10) сделать экспорт в эксель из существующих гридов. Решение принял буквально сразу: перевести все данные из грида в ужасный CSV, который очень неплохо открывается Excel-ем.

Для начала реализуем метод  PrepareForExport, который и будет использоваться разными гридами для экспорта их внутренностей:

 /// <summary>
 /// Make some preparations with the grid before export
 /// </summary>
 /// <param name="dg"></param>
 private void PrepareForExport(Microsoft.Windows.Controls.DataGrid dg)
 {
 object selItem = dg.SelectedItem;
 dg.SelectionMode = Microsoft.Windows.Controls.DataGridSelectionMode.Extended;
 dg.SelectAllCells();
 dg.ClipboardCopyMode = Microsoft.Windows.Controls.DataGridClipboardCopyMode.IncludeHeader;
 ApplicationCommands.Copy.Execute(null, dg);
 // return to previous mode
 dg.SelectionMode = Microsoft.Windows.Controls.DataGridSelectionMode.Single;
 dg.SelectedItem = selItem;
 }

!не забываем сохранить и выбранную позицию до копирования в буффер обмена.
Затем-сохраняем все это дело в файл, попутно следя за кодировкой:

PrepareForExport(SomeDataGrid);
#region Open save dialog and save the formated file
SaveFileDialog sv = new SaveFileDialog { Filter = "CSV|*.csv|Text Documents|*.txt" };
sv.ShowDialog();
if (!string.IsNullOrEmpty(sv.FileName))
{
    using (StreamWriter sw = new StreamWriter(sv.FileName, false, System.Text.Encoding.Unicode, 10485760)) // buffer = 10Mb
    {
        sw.Write(Clipboard.GetData(TextDataFormat.UnicodeText.ToString()));
        sw.Close();
    }
}
#endregion

Все, можно открывать в Excel!
*Использовался грид из WPFToolkit

Реклама

One response to “Пример реализации экспорта в CSV (например для открытия в Excel) из WPFToolkit DataGrid

  1. Stalin 16/07/2012 в 18:41

    А как сохранить в обычном формате excel (*xlsx) ??
    пытался поменять фильтр на следующий
    Filter = «Книга Excel|*.xlsx»
    не получается..

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: