Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2018, 12:22   #1
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию экспорт 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.

Как можно сделать експорт в ексель идентичные с гридом данные?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 03.01.2018, 12:45   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Я бы взял библиотеку типа https://github.com/ClosedXML/ClosedXML и не парился со всем этим COM'ом.
+ лучше производительность, не надо открывать целый Эксель.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 03.01.2018, 14:20   #3
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

те же яйца
Цитата:
Сообщение от Alex11223 Посмотреть сообщение
+ лучше производительность, не надо открывать целый Эксель.
Временное решение:
Дописываю в начале "_", а там в екселе разберемся.
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 03.01.2018, 14:27   #4
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

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

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Экспорт данных из DataGridView в Excel файл userrrr Windows Forms 0 26.12.2016 20:25
Экспорт данных из Excel в DataGridView (MSVS 2012, C#) Demonikaliysis Помощь студентам 0 21.07.2015 16: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