Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Matroskin_Kot
3 / 3 / 3
Регистрация: 10.05.2016
Сообщений: 875
1

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

29.10.2017, 10:18. Просмотров 771. Ответов 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)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.10.2017, 10:18
Ответы с готовыми решениями:

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

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

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

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

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

9
Shogun31337
534 / 514 / 222
Регистрация: 02.11.2016
Сообщений: 1,538
Завершенные тесты: 2
29.10.2017, 12:56 2
Лучший ответ Сообщение было отмечено 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
Matroskin_Kot
3 / 3 / 3
Регистрация: 10.05.2016
Сообщений: 875
29.10.2017, 14:04  [ТС] 3
Подскажите еще а как можно программно сделать ширну строк в 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
534 / 514 / 222
Регистрация: 02.11.2016
Сообщений: 1,538
Завершенные тесты: 2
29.10.2017, 14:32 4
Цитата Сообщение от Matroskin_Kot Посмотреть сообщение
Подскажите еще а как можно программно сделать ширну строк в Excel и написать где то загловок таблици по середине
Вот этого, к сожалению, не знаю...

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

Добавлено через 1 минуту
И вызывать его нужно после формирования таблицы, а не до этого!
1
Matroskin_Kot
3 / 3 / 3
Регистрация: 10.05.2016
Сообщений: 875
29.10.2017, 15:05  [ТС] 5
Подскажи еще момент
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
534 / 514 / 222
Регистрация: 02.11.2016
Сообщений: 1,538
Завершенные тесты: 2
29.10.2017, 16:07 6
Цитата Сообщение от Matroskin_Kot Посмотреть сообщение
Это я в Word уже экспортирую
Вот насчет ворда не подскажу... Всего пару раз с ним работал и то 100 лет назад. Сейчас уже не вспомню.
0
Matroskin_Kot
3 / 3 / 3
Регистрация: 10.05.2016
Сообщений: 875
29.10.2017, 20:17  [ТС] 7
Не получаеться сохранить Ecxel документ ( метод SaveAs(); не существует (
0
Shogun31337
534 / 514 / 222
Регистрация: 02.11.2016
Сообщений: 1,538
Завершенные тесты: 2
29.10.2017, 22:19 8
Цитата Сообщение от Matroskin_Kot Посмотреть сообщение
метод SaveAs(); не существует
Значит, GetSaveAsFilename должен быть. Не может же у Вас быть какая то уникальная библиотека без методов сохранения документа. Какая, кстати, версия Microsoft.Office.Interop.Excel?
1
Matroskin_Kot
3 / 3 / 3
Регистрация: 10.05.2016
Сообщений: 875
29.10.2017, 22:57  [ТС] 9
Цитата Сообщение от Shogun31337 Посмотреть сообщение
Значит, GetSaveAsFilename должен быть. Не может же у Вас быть какая то уникальная библиотека без методов сохранения документа. Какая, кстати, версия Microsoft.Office.Interop.Excel?
15 версия GetSaveAsFilename - есть но я не могу понять как сохранить через него
0
Shogun31337
534 / 514 / 222
Регистрация: 02.11.2016
Сообщений: 1,538
Завершенные тесты: 2
29.10.2017, 23:09 10
Цитата Сообщение от Matroskin_Kot Посмотреть сообщение
15 версия
С 15-й не сталкивался. У меня 14.

Цитата Сообщение от Matroskin_Kot Посмотреть сообщение
GetSaveAsFilename - есть но я не могу понять как сохранить через него
Я же написал как! Просто вызываете ЕxcelApp.GetSaveAsFilename(); там где это нужно и все!
1
29.10.2017, 23:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.10.2017, 23:09

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

Экспорт данных из файла Excel в DataGridView
Нашел код для загрузки данных Excel в таблицу DataGridView: private void...

Экспорт в Excel. Почему выдается исключение на код изменения ширины колонки?
Что не так с кодом не могу разобраться почему агриться на строчки ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru