0x49D1

0L4g0YDQsNC30YDQsNCx0L7RgtC60LUsINC00LvRjyDRgNCw0LfRgNCw0LHQvtGC0YfQuNC60L7QsiA=

Еще один пример осуществить экспорт в excel(*.CSV) из WPF DataGrid


Знаю, тема не нова, есть куча разных методов. Приведу тут тот, который выбрал для SQLCELogViewer-a.
Как известно программе excel можно скормить простые строки с определенной структурой, где заголовок и «ячейки» разделены запятыми, так называемый формат comma separated values(CSV). Таким образом грубо достаточно просто данные из DataGrid-а перевести в формат строки с запятыми, чтоб excel их открыл.
Приведу просто код с небольшими пояснениями, так как тут ничего сложного нет(ExcelManager-статический класс, буду использовать его для дальнейших вариантов экспорта)):

    public static class ExportManager
    {
        public static void ExportToCSV(System.Windows.Controls.DataGrid dg) // dg-наш подопытный
        {
            if (dg.Items.Count == 0)
                return;

            dg.SelectAllCells();// выбираем все ячейки
            dg.ClipboardCopyMode = DataGridClipboardCopyMode.IncludeHeader;// подготавливаем clipboard к копированию грида с заголовком
            ApplicationCommands.Copy.Execute(null, dg);// "copy"
            dg.UnselectAllCells();
            var stream = (System.IO.Stream)Clipboard.GetData(DataFormats.CommaSeparatedValue);// взятие данных из clipboard
            var encoding = System.Text.Encoding.GetEncoding("UTF-8");
            var reader = new System.IO.StreamReader(stream, encoding); 
            string result = reader.ReadToEnd();// копирование их в строку в UTF-8 кодировке
            Clipboard.Clear();

            OpenFileDialog ofd = new OpenFileDialog();
            ofd.InitialDirectory = "c:\\";
            ofd.Filter = "CSV (*.csv)|*.csv|All files (*.*)|*.*";
            ofd.RestoreDirectory = true;
            ofd.CheckFileExists = false;

            if (ofd.ShowDialog() == DialogResult.OK)
            {
                using (System.IO.StreamWriter file = new System.IO.StreamWriter(ofd.FileName))
                {
                    file.WriteLine(result);
                }
            }
        }

Результат:

ID,Time,Message,Level,Logger,Exception
1,2/26/2012 11:47:38 AM,SQLCELogViewer 1.0.4439.20903 started,Info,SQLCELogViewer.App,
,,,,,

а это вполне смотрибельно в excel.

Реклама

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

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

Логотип WordPress.com

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

Фотография Twitter

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

Фотография Facebook

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

Google+ photo

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

Connecting to %s

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