Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
4 / 4 / 3
Регистрация: 10.05.2016
Сообщений: 1,117
.NET 4.x

Datagridview экспорт в Excel и исключение некоторых данных

29.10.2017, 10:18. Показов 2047. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет, вот я так экспортирую из datagridview в Excel
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private void ecxelToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();
            Microsoft.Office.Interop.Excel.Workbook ExcelWorkBook;
            Microsoft.Office.Interop.Excel.Worksheet ExcelWorkSheet;
            //Книга.
            ExcelWorkBook = ExcelApp.Workbooks.Add(System.Reflection.Missing.Value);
            //Таблица.
            ExcelWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)ExcelWorkBook.Worksheets.get_Item(1);
 
            for (int i = 0; i < dataGridView_Main.Rows.Count; i++)
            {
                for (int j = 0; j < dataGridView_Main.ColumnCount; j++)
                {
                    ExcelApp.Cells[i + 1, j + 1] = dataGridView_Main.Rows[i].Cells[j].Value;
                }
            }
            //Вызываем нашу созданную эксельку.
            ExcelApp.Visible = true;
            ExcelApp.UserControl = true;
        }
Вроде бы все нормально,
1) но мне надо исключить поле id и date, это 0 и 1 ячейка в datagridview, что бы они не экспортировались в Excel
2) надо дать заголовки стоблцам )
3) И не могу понять где мне прописать путь сохранения файла я бы хотел это сделать через Класс SaveFileDialog подскажите пожалуйста
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.10.2017, 10:18
Ответы с готовыми решениями:

Экспорт данных из datagridview в Excel
Всем привет! Может кто-нибудь подсказать как сделать &quot;Экспорт данных их datagridview в Exel&quot;, то есть имеется сетка с данными и при...

Экспорт данных из dataGridView в Excel?
Я вывожу запросом данные из базы в dataGridView (на русунке ) хочу вывести эти данные в Excel как показано на изображении. Можно такое...

Экспорт данных из Excel-я в DataGridView
Здравствуйте друзья Как реализовать экспорт данных из экзеля в datagridview.

9
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
29.10.2017, 12:56
Лучший ответ Сообщение было отмечено Matroskin_Kot как решение

Решение

Цитата Сообщение от Matroskin_Kot Посмотреть сообщение
1) но мне надо исключить поле id и date, это 0 и 1 ячейка в datagridview, что бы они не экспортировались в Excel
C#
1
2
3
4
for (int j = 2; j < dataGridView_Main.ColumnCount; j++)
{
    workSheet.Cells[i + 1, j - 1] = dataGridView_Main.Rows[i].Cells[j].Value;
}
Цитата Сообщение от Matroskin_Kot Посмотреть сообщение
2) надо дать заголовки стоблцам
C#
1
2
3
workSheet.Cells[1, 1] = "Наименование 1-го столбца";
// И так далее для всех остальных
// Только следует учитывать, что при заполнении ячеек данными начинать нужно со 2-й строки!!!
Цитата Сообщение от Matroskin_Kot Посмотреть сообщение
И не могу понять где мне прописать путь сохранения файла я бы хотел это сделать через Класс SaveFileDialog
C#
1
excelApp.GetSaveAsFilename();
2
4 / 4 / 3
Регистрация: 10.05.2016
Сообщений: 1,117
29.10.2017, 14:04  [ТС]
Подскажите еще а как можно программно сделать ширну строк в Excel и написать где то загловок таблици по середине

Добавлено через 22 минуты
Что то сохрение не работает (
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
SaveFileDialog sfd = new SaveFileDialog();
 
            sfd.Filter = "Microsoft Excel (*.xls)|*.xls";
 
            sfd.Title = "Єдина реєстрація користувачів";
 
            if (sfd.ShowDialog() != DialogResult.OK)
                return;
          
 
 
            Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();
           // ExcelApp.GetSaveAsFilename(FulPath);
            Microsoft.Office.Interop.Excel.Workbook ExcelWorkBook;
            Microsoft.Office.Interop.Excel.Worksheet ExcelWorkSheet;
            //Книга.
            ExcelWorkBook = ExcelApp.Workbooks.Add(System.Reflection.Missing.Value);
            //Таблица.
            ExcelWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)ExcelWorkBook.Worksheets.get_Item(1);
 
            for (int i = 0; i < dataGridView_Main.Rows.Count; i++)
            {
                for (int j = 2; j < dataGridView_Main.ColumnCount; j++)
                {
                    ExcelApp.Cells[i + 1, j - 1] = dataGridView_Main.Rows[i].Cells[j].Value;
                }
            }
            ExcelApp.Cells[1, 1] = "ПІБ";
            ExcelApp.Cells[1, 2] = "Дата народження";
            ExcelApp.Cells[1, 3] = "ВПО";
            ExcelApp.Cells[1, 4] = "Людина з інвалідністю";
 
            
 
            //Вызываем нашу созданную эксельку.
            ExcelApp.Visible = true;
            ExcelApp.UserControl = true;
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
29.10.2017, 14:32
Цитата Сообщение от Matroskin_Kot Посмотреть сообщение
Подскажите еще а как можно программно сделать ширну строк в Excel и написать где то загловок таблици по середине
Вот этого, к сожалению, не знаю...

Цитата Сообщение от Matroskin_Kot Посмотреть сообщение
Что то сохрение не работает (
Возможно, у Вас другая версия библиотеки Microsoft.Office.Interop.Excel. Они немного отличаются по синтаксису. Попробуйте
C#
1
excelApp.SaveAs();
Добавлено через 6 минут
Цитата Сообщение от Matroskin_Kot Посмотреть сообщение
Что то сохрение не работает (
Так а при чем тут SaveFileDialog ??? excelApp.GetSaveAsFilename (или excelApp.SaveAs) свой диалог вызывает. Никаких дополнительных SaveFileDialog не нужно!

Добавлено через 1 минуту
И вызывать его нужно после формирования таблицы, а не до этого!
1
4 / 4 / 3
Регистрация: 10.05.2016
Сообщений: 1,117
29.10.2017, 15:05  [ТС]
Подскажи еще момент
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
public static void Export_Data_To_Word(DataGridView DGV, string filename)
        {
 
            if (DGV.Rows.Count != 0)
            {
                int RowCount = DGV.Rows.Count;
                int ColumnCount = DGV.Columns.Count;
                Object[,] DataArray = new object[RowCount + 1, ColumnCount + 1];
 
                //add rows
                int r = 0;
                for (int c = 0; c <= ColumnCount - 1; c++)
                {
                    for (r = 0; r <= RowCount - 1; r++)
                    {
                        DataArray[r, c] = DGV.Rows[r].Cells[c].Value;
                    } //end row loop
                } //end column loop
 
                Word.Document oDoc = new Word.Document();
                oDoc.Application.Visible = true;
 
                //page orintation
                oDoc.PageSetup.Orientation = Word.WdOrientation.wdOrientLandscape;
 
 
                dynamic oRange = oDoc.Content.Application.Selection.Range;
                string oTemp = "";
                for (r = 0; r <= RowCount - 1; r++)
                {
                    for (int c = 0; c <= ColumnCount - 1; c++)
                    {
                        oTemp = oTemp + DataArray[r, c] + "\t";
 
                    }
                }
 
                //table format
                oRange.Text = oTemp;
                object oMissing = Missing.Value;
                object Separator = Word.WdTableFieldSeparator.wdSeparateByTabs;
                object ApplyBorders = true;
                object AutoFit = true;
                object AutoFitBehavior = Word.WdAutoFitBehavior.wdAutoFitContent;
 
                oRange.ConvertToTable(ref Separator, ref RowCount, ref ColumnCount,
                                      Type.Missing, Type.Missing, ref ApplyBorders,
                                      Type.Missing, Type.Missing, Type.Missing,
                                      Type.Missing, Type.Missing, Type.Missing,
                                      Type.Missing, ref AutoFit, ref AutoFitBehavior, Type.Missing);
 
                oRange.Select();
 
                oDoc.Application.Selection.Tables[1].Select();
                oDoc.Application.Selection.Tables[1].Rows.AllowBreakAcrossPages = 0;
                oDoc.Application.Selection.Tables[1].Rows.Alignment = 0;
                oDoc.Application.Selection.Tables[1].Rows[1].Select();
                oDoc.Application.Selection.InsertRowsAbove(1);
                oDoc.Application.Selection.Tables[1].Rows[1].Select();
 
                //header row style
                oDoc.Application.Selection.Tables[1].Rows[1].Range.Bold = 1;
                oDoc.Application.Selection.Tables[1].Rows[1].Range.Font.Name = "Tahoma";
                oDoc.Application.Selection.Tables[1].Rows[1].Range.Font.Size = 14;
               
 
                //add header row manually
                for (int c = 0; c <= ColumnCount - 1; c++)
                {
                    oDoc.Application.Selection.Tables[1].Cell(1, c + 1).Range.Text = DGV.Columns[c].HeaderText;
                }
 
                //table style 
                oDoc.Application.Selection.Tables[1].Rows[1].Select();
                oDoc.Application.Selection.Cells.VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;
 
                //header text
                foreach (Word.Section section in oDoc.Application.ActiveDocument.Sections)
                {
                    Word.Range headerRange = section.Headers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;
                    headerRange.Fields.Add(headerRange, Word.WdFieldType.wdFieldPage);
                    headerRange.Text = "Єдина реєстрація користувачів \n Дані станом на " + DateTime.Now.ToString("dd MMMM yyyy");
                    headerRange.Font.Size = 16;
                    headerRange.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;
                }
 
                //save the file
 
                oDoc.SaveAs(filename, ref oMissing, ref oMissing, ref oMissing,
                ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                ref oMissing, ref oMissing);
 
                //NASSIM LOUCHANI
            }
        }
Это я в Word уже экспортирую мне надо опять скрыть id и поле yeury оно первое и второе и нужно создать стоблец с № где идет порядковый номер
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
29.10.2017, 16:07
Цитата Сообщение от Matroskin_Kot Посмотреть сообщение
Это я в Word уже экспортирую
Вот насчет ворда не подскажу... Всего пару раз с ним работал и то 100 лет назад. Сейчас уже не вспомню.
0
4 / 4 / 3
Регистрация: 10.05.2016
Сообщений: 1,117
29.10.2017, 20:17  [ТС]
Не получаеться сохранить Ecxel документ ( метод SaveAs(); не существует (
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
29.10.2017, 22:19
Цитата Сообщение от Matroskin_Kot Посмотреть сообщение
метод SaveAs(); не существует
Значит, GetSaveAsFilename должен быть. Не может же у Вас быть какая то уникальная библиотека без методов сохранения документа. Какая, кстати, версия Microsoft.Office.Interop.Excel?
1
4 / 4 / 3
Регистрация: 10.05.2016
Сообщений: 1,117
29.10.2017, 22:57  [ТС]
Цитата Сообщение от Shogun31337 Посмотреть сообщение
Значит, GetSaveAsFilename должен быть. Не может же у Вас быть какая то уникальная библиотека без методов сохранения документа. Какая, кстати, версия Microsoft.Office.Interop.Excel?
15 версия GetSaveAsFilename - есть но я не могу понять как сохранить через него
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
29.10.2017, 23:09
Цитата Сообщение от Matroskin_Kot Посмотреть сообщение
15 версия
С 15-й не сталкивался. У меня 14.

Цитата Сообщение от Matroskin_Kot Посмотреть сообщение
GetSaveAsFilename - есть но я не могу понять как сохранить через него
Я же написал как! Просто вызываете ЕxcelApp.GetSaveAsFilename(); там где это нужно и все!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.10.2017, 23:09
Помогаю со студенческими работами здесь

Экспорт данных в Excel из DataGridView
Всем привет! Думаю тема многим знакома потому, что почти каждый третий работающий в С# сталкивался, рано или поздно, с работой с...

Экспорт данных из DataGridView в Excel
Помогите пожалуйста, я экспортировала данные из datagridview в эксель, затем по этим данным в экселе сделала диаграмму, но когда по новой...

Экспорт данных в Excel из DataGridView
Экспорт данных в Excel из DataGridView. Как это делается помогите пожалуйста? Из БД Экспорт получается но я хотел после компиляции из...

Экспорт данных в Excel из DataGridView
Необходимо сделать экспорт в эксель из DataGridView

Экспорт данных из DataGridView в Excel
Необходимо экспортировать в Excel, но после того как кликаю по кнопке, то выходит сообщение: &quot;Необработанное исключение типа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru