Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 03.01.2018, 13:22   #1
Aleksandr H.
2 the Nation Glory
Профессионал
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Адрес: Wild West Ukraine
Сообщений: 2,478
Репутация: 885
По умолчанию экспорт dataGridView в MS Excel

Имеется грид с данными
dtgrid.jpg

хочу экспортировать в ексель.

Пользуюсь следующим кодом
Код:

using System;
using Excel;
using System.Windows.Forms;
using System.IO;
using System.Data;
......
public static void ExportDataGridViewToExcel(DataGridView sourceDataGridView)
        {
            Microsoft.Office.Interop.Excel._Application excel = new Microsoft.Office.Interop.Excel.Application();
            Microsoft.Office.Interop.Excel._Workbook workbook = excel.Workbooks.Add(Type.Missing);
            Microsoft.Office.Interop.Excel._Worksheet worksheet = null;
            try
            {
                worksheet = workbook.ActiveSheet;
                worksheet.Name = "ExportedFromDataGrid";

                int cellRowIndex = 1;
                int cellColumnIndex = 1;

                //Loop through each row and read value from each column. 
                for (int i = -1; i < sourceDataGridView.Rows.Count - 1; i++)
                {
                    for (int j = 0; j < sourceDataGridView.Columns.Count; j++)
                    {
                        // Excel index starts from 1,1. As first Row would have the Column headers, adding a condition check. 
                        if (cellRowIndex == 1)
                        {
                            worksheet.Cells[cellRowIndex, cellColumnIndex] = sourceDataGridView.Columns[j].HeaderText;
                        }
                        else
                        {
                            worksheet.Cells[cellRowIndex, cellColumnIndex] = sourceDataGridView.Rows[i].Cells[j].Value;
                        }
                        cellColumnIndex++;
                    }
                    cellColumnIndex = 1;
                    cellRowIndex++;
                }

                //Getting the location and file name of the excel to save from user. 
                SaveFileDialog saveDialog = new SaveFileDialog();
                saveDialog.Filter = "Excel files (*.xlsx)|*.xlsx|All files (*.*)|*.*";
                saveDialog.FilterIndex = 1;

                if (saveDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    workbook.SaveAs(saveDialog.FileName);
                    MessageBox.Show("Експорт завершений", "Експорт результатів", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                excel.Quit();
                workbook = null;
                excel = null;
            }
        }

но в екселе получаю несоответсвие
xls.jpg.

Как можно сделать експорт в ексель идентичные с гридом данные?
__________________
Mailto: media.project@ukr.net
Aleksandr H. вне форума   Ответить с цитированием
Старый 03.01.2018, 13:45   #2
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 17,368
Репутация: 3353

icq: 512-765
skype: alexp.frl
По умолчанию

Я бы взял библиотеку типа https://github.com/ClosedXML/ClosedXML и не парился со всем этим COM'ом.
+ лучше производительность, не надо открывать целый Эксель.
Alex11223 на форуме   Ответить с цитированием
Старый 03.01.2018, 15:20   #3
Aleksandr H.
2 the Nation Glory
Профессионал
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Адрес: Wild West Ukraine
Сообщений: 2,478
Репутация: 885
По умолчанию

те же яйца
Цитата:
Сообщение от Alex11223 Посмотреть сообщение
+ лучше производительность, не надо открывать целый Эксель.
Временное решение:
Дописываю в начале "_", а там в екселе разберемся.
__________________
Mailto: media.project@ukr.net
Aleksandr H. вне форума   Ответить с цитированием
Старый 03.01.2018, 15:27   #4
Black Fregat
Программист
Профессионал
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,136
Репутация: 840
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
Дописываю в начале "_", а там в екселе разберемся.
Надо дописывать в начале кавычку - это признак строчного формата
Black Fregat вне форума   Ответить с цитированием
Старый 03.01.2018, 16:15   #5
Aleksandr H.
2 the Nation Glory
Профессионал
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Адрес: Wild West Ukraine
Сообщений: 2,478
Репутация: 885
По умолчанию

Цитата:
Сообщение от Black Fregat Посмотреть сообщение
Надо дописывать в начале кавычку - это признак строчного формата
Логично ведь.
__________________
Mailto: media.project@ukr.net
Aleksandr H. вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Экспорт данных из DataGridView в Excel файл userrrr Windows Forms 0 26.12.2016 21:25
Экспорт данных из Excel в DataGridView (MSVS 2012, C#) Demonikaliysis Помощь студентам 0 21.07.2015 17:38
Из Excel в DataGridView vladgrey Общие вопросы .NET 1 03.06.2012 15:40
Excel - экспорт выбранной ячейки из DBGrid в Excel. wymkent Помощь студентам 0 16.05.2012 02:10
Экспорт из Access в Excel, Экспорт из отчётов в таблицу Excel Kissedbythegod Microsoft Office Access 1 31.05.2008 22:15


13:10.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru