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

Экспорт данных в Excel из DataGridView

16.09.2010, 11:31. Просмотров 19971. Ответов 60
Метки нет (Все метки)

Экспорт данных в Excel из DataGridView. Как это делается помогите пожалуйста? Из БД Экспорт получается но я хотел после компиляции из DataGridView экспортировать.
1
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.09.2010, 11:31
Ответы с готовыми решениями:

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

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

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

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

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

60
Helios1.618
45 / 45 / 3
Регистрация: 15.11.2009
Сообщений: 372
16.09.2010, 13:55 2
Лучший ответ Сообщение было отмечено как решение

Решение

kenjebek, Вы хотите из самой datagridview экспортировать данные в Excel ?

Добавлено через 18 секунд
что вам конкретно не понятно ?

Добавлено через 10 минут
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//Приложение
            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 < dataGridView1.Rows.Count; i++)
            {
                for (int j = 0; j < dataGridView1.ColumnCount; j++)
                {
                    ExcelApp.Cells[i + 1, j + 1] = dataGridView1.Rows[i].Cells[j].Value;
                }
            }
            //Вызываем нашу созданную эксельку.
            ExcelApp.Visible = true;
            ExcelApp.UserControl = true;
думаю , это то, что вы ищите)
24
kenjebek
3 / 3 / 1
Регистрация: 14.01.2010
Сообщений: 17
20.09.2010, 16:06  [ТС] 3
Большое спасибо Helios1.618 это код работает.
0
Napster
43 / 11 / 3
Регистрация: 16.12.2008
Сообщений: 107
05.03.2011, 17:34 4
подскажите, как запихнуть код из 2 поста так, чтобы это все работало при сохранении через меню. и что нужно дописать в using помимо этого?
0
Vangok
77 / 76 / 13
Регистрация: 21.10.2010
Сообщений: 349
10.03.2011, 18:05 5
Цитата Сообщение от Napster Посмотреть сообщение
подскажите, как запихнуть код из 2 поста так, чтобы это все работало при сохранении через меню. и что нужно дописать в using помимо этого?
в пространстве имен ни чего не надо дописывать, так как там все уже описано, а вот в referense необходимо добавить библиотеку Microsoft.Interop.Excel.
Для меню все просто, делаете подпрограмму того кода который представлен выше и на событие меню онклик вставляете подпрограмму.
Можно даже для разных DataGridView сделать.
2
Alex_Rider
2 / 2 / 0
Регистрация: 20.11.2009
Сообщений: 51
14.06.2011, 00:26 6
Очень помогло.ВЕРИ ДЯКУЙ!!!!
0
blacl_cloak
5 / 5 / 6
Регистрация: 31.03.2013
Сообщений: 216
07.05.2013, 15:24 7
что нужно добавить в данный код, чтоб экспорт шел в уже созданный файл exsel, в определённые ячейки?
0
Kruds
694 / 694 / 226
Регистрация: 04.03.2013
Сообщений: 1,384
Завершенные тесты: 1
07.05.2013, 15:38 8
C#
1
2
excelapp = new Excel.Application(); 
 excelapp.Workbooks.Open(@"SomeDisc:/Somedirectory/Filename.xls");
1
Syler
5 / 5 / 1
Регистрация: 17.02.2013
Сообщений: 18
09.06.2014, 21:20 9
блин, у меня была та же ошибка из-за того, что обращался к ячейкам по индексу [0, 0] ><
0
Padshij_Angel
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 16
11.01.2015, 12:20 10
подскажите по подробнее об экспорте в уже созданный excel файл, а то не получается, открываются два файла, созданный и новый создается.
0
Slide95ru
0 / 0 / 2
Регистрация: 23.07.2014
Сообщений: 7
05.06.2015, 12:24 11
Господа, такая проблема. Поменял немного код ( нужно чтобы выводил инфу в созданную форму с 15 строки ), НО при таком коде выдает ошибку не соответствия типов, как быть?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 string templateFile = Directory.GetCurrentDirectory() + @"\Документы\Товарный чек.xls";
            excelApp.Workbooks.Open(templateFile, Type.Missing, Type.Missing,
                                Type.Missing, Type.Missing, Type.Missing,
                                Type.Missing, Type.Missing, Type.Missing,
                                Type.Missing, Type.Missing, Type.Missing,
                                Type.Missing, Type.Missing, Type.Missing);
            Excel._Worksheet workSheet = excelApp.ActiveSheet;
 
            for (int i = 0; i < dataGridViewVivod.Rows.Count; i++)
            {
                for (int j = 0; j < dataGridViewVivod.ColumnCount; j++)
                {
                    excelApp.Cells["B15" + i + 1, j + 1] = dataGridViewVivod.Rows[i].Cells[j].Value;
                }
            }
0
Wanzan
1 / 1 / 2
Регистрация: 23.04.2015
Сообщений: 71
26.10.2016, 06:03 12
Helios1.618,
Добрый день! воспользовался этим кодом, выдает ошибку: Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции.

Ничего понять не могу.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//Приложение
            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 < dataGridView1.Rows.Count; i++)
            {
                for (int j = 0; j < dataGridView1.ColumnCount; j++)
                {
                    ExcelApp.Cells[i + 1, j + 1] = dataGridView1.Rows[i].Cells[j].Value; //Тут ошибку выдает
                }
            }
            //Вызываем нашу созданную эксельку.
            ExcelApp.Visible = true;
            ExcelApp.UserControl = true;
0
Pavel55
827 / 281 / 113
Регистрация: 27.10.2006
Сообщений: 657
26.10.2016, 23:54 13
меня в ваших кодах по Excel в данной теме смущает такой момент - непосредственный родитель у ячейки есть лист, а не приложение Excel. В приложенных кодах у вас указано

C#
1
ExcelApp.Cells[i + 1, j + 1] = dataGridView1.Rows[i].Cells[j].Value;
мне кажется, что правильнее писать так

C#
1
ExcelWorkSheet.Cells[i + 1, j + 1] = dataGridView1.Rows[i].Cells[j].Value;

вот код, потестировал, ошибок нет

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
//добавьте ссылки на Microsfot Office x.x Object Library и Microsoft Excel x.x Object Library
Microsoft.Office.Interop.Excel.Application XlApp = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook XlWorkBook = XlApp.Workbooks.Open(@"G:\C#\ExcelFile.xlsx"); //создать новый файл: XlApp.Workbooks.Add();
Microsoft.Office.Interop.Excel.Worksheet XlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)XlWorkBook.Worksheets.get_Item(1); //1-й лист по порядку
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
    for (int j = 0; j < dataGridView1.ColumnCount; j++)
    {
        XlWorkSheet.Cells[i + 1, j + 1] = dataGridView1.Rows[i].Cells[j].Value;
    }
}
XlApp.Visible = true;
//XlApp.UserControl = true;
1
Wanzan
1 / 1 / 2
Регистрация: 23.04.2015
Сообщений: 71
28.10.2016, 07:47 14
Pavel55,
Спасибо! разобрался.

Еще вопрос.
сделал приложение, запускается первая форма с простеньким поиском по базе и экспорта результата в EXCEL.
при экспорте в диспетчере задач появляется процесс EXCEL.exe. если я закрываю созданную книгу, он завершается.

когда я запускаю вторую форму (на ней реализовано добавление данных в БД и вывод добавленной в БД информации в dataGridView, а также экспорт в EXCEL, печать через EXCEL, и сохранение книг), при ее открытии в диспетчере задач появляются сразу два процесса EXCEL.exe. Почему так происходит понять не могу.
Можете подсказать? И помочь в решении этой проблемы?

Я думаю что из-за этого:
C#
1
2
using Excel1 = Microsoft.Office.Interop.Excel; //Вывод из dataGridView1 в Excel и его открытие
using Excel2 = Microsoft.Office.Interop.Excel; //Вывод из dataGridView1 в Excel + Печать без открытия
Добавлено через 1 минуту
Вот весь код второй формы:

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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Collections;
 
using Microsoft.Office.Interop.Excel;
using Excel1 = Microsoft.Office.Interop.Excel; //Вывод из dataGridView1 в Excel и его открытие
using Excel2 = Microsoft.Office.Interop.Excel; //Вывод из dataGridView1 в Excel + Печать без открытия
//using Excel3 = Microsoft.Office.Interop.Excel; //Вывод из dataGridView1 в Excel + Сохранение без открытия
//using Excel = Microsoft.Office.Interop.Excel; //Вывод из dataGridView1 в Excel и его открытие
namespace cartListRepEx
{
    public partial class newApp : Form
    {
        public newApp()
        {
            InitializeComponent();
        }
 
        private int current_row = 0;
        private int current_col = 0;
        private int tempRow1, tempCol1, tempRow2, tempCol2, count;
 
        #region */SQL Connection/*
 
        string connStr = "Server=.\\SQLEXPRESS;Database=talons;Trusted_Connection=Yes";
        SqlConnection connS = new SqlConnection(@"Server=.\\SQLEXPRESS;Database=talons;Trusted_Connection=Yes");
        SqlCommand commS = new SqlCommand();
        SqlDataAdapter adapS = new SqlDataAdapter();
        DataSet dsS = new DataSet();
        //SqlDataReader readS = new SqlDataReader();
        SqlCommandBuilder buildS = new SqlCommandBuilder();
 
        #endregion
 
        private void newApp_Load(object sender, EventArgs e)
        {
            // TODO: данная строка кода позволяет загрузить данные в таблицу "talonsDataSet2.cart_Name". При необходимости она может быть перемещена или удалена.
            this.cart_NameTableAdapter.Fill(this.talonsDataSet2.cart_Name);
            // TODO: данная строка кода позволяет загрузить данные в таблицу "talonsDataSet1.talon_List". При необходимости она может быть перемещена или удалена.
            this.talon_ListTableAdapter.Fill(this.talonsDataSet1.talon_List);
            DataSet ds = new DataSet();
            SqlConnection cnS = new SqlConnection(connStr);
            SqlCommand cmS = cnS.CreateCommand();
            cmS.CommandText = "SELECT talon_ID FROM talon_List";
            cnS.Open();
 
            SqlDataReader rd = cmS.ExecuteReader();
            while (rd.Read())
            {
                int test = rd.GetOrdinal("talon_ID");
                label3.Text = Convert.ToString(rd.GetValue(test));
            }
            cnS.Close();
 
            int oldNum;
            int num;
            oldNum = Int32.Parse(label3.Text);
            num = 1;
            label6.Text += (oldNum + num);
        }
 
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            string search;
            search = comboBox1.Text;
 
            connS = new SqlConnection(connStr);
            commS = connS.CreateCommand();
            commS.CommandText = "SELECT * FROM cart_Name cart_Name WHERE cart_Name = @cart_Name";
            commS.Parameters.AddWithValue("cart_Name", search);
            connS.Open();
            SqlDataReader readS = commS.ExecuteReader();
            while (readS.Read())
            {
                int cart_Name_ID = readS.GetOrdinal("cart_Name_ID");
                textBox2.Text = Convert.ToString(readS.GetValue(cart_Name_ID));
            }
            connS.Close();
        }
 
        private object missingO = System.Reflection.Missing.Value;
        private object missingO2 = System.Reflection.Missing.Value;
 
        #region /*Вывод в EXCEL*/
 
        //Вывод в EXCEL
 
        Excel1.Application exApp_New = new Excel1.Application();
        Excel1.Workbook wb_New = null;
        Excel1.Worksheet ws_New = null;
 
        private void button4_Click(object sender, EventArgs e)
        {
            
 
            wb_New = exApp_New.Workbooks.Add(System.Reflection.Missing.Value);
            ws_New = (Microsoft.Office.Interop.Excel.Worksheet)wb_New.Worksheets.get_Item(1);
            ws_New.Cells.Locked = false;
 
            //Объединение ячеек
            Excel1.Range rangeGroup1 = (Excel1.Range)ws_New.get_Range("A1", "C2").Cells;
            rangeGroup1.Merge(Type.Missing);
            rangeGroup1.HorizontalAlignment = XlHAlign.xlHAlignLeft;
            rangeGroup1.VerticalAlignment = XlVAlign.xlVAlignCenter;
            rangeGroup1.Font.Name = "Times New Roman";
            rangeGroup1.Font.Size = 16;
            rangeGroup1.Locked = false;
            Excel1.Range rangeGroup2 = (Excel1.Range)ws_New.get_Range("A3", "C3").Cells;
            rangeGroup2.Merge(Type.Missing);
            rangeGroup2.HorizontalAlignment = XlHAlign.xlHAlignCenter;
            rangeGroup2.VerticalAlignment = XlVAlign.xlVAlignCenter;
            rangeGroup2.Font.Name = "Times New Roman";
            rangeGroup2.Font.Size = 12;
 
            //Ширина столбцов
            Excel1.Range rangeWidth1 = ws_New.Range["A1", System.Type.Missing];
            rangeWidth1.EntireColumn.ColumnWidth = 60;
            Excel1.Range rangeWidth2 = ws_New.Range["B1", System.Type.Missing];
            rangeWidth2.EntireColumn.ColumnWidth = 16;
            Excel1.Range rangeWidth3 = ws_New.Range["C1", System.Type.Missing];
            rangeWidth3.EntireColumn.ColumnWidth = 16;
            //Оформление листа + печать
            ws_New.PageSetup.Orientation = XlPageOrientation.xlPortrait;
            ws_New.PageSetup.PaperSize = XlPaperSize.xlPaperA4;
            ws_New.PageSetup.TopMargin = 1;
            ws_New.PageSetup.RightMargin = 0.75;
            ws_New.PageSetup.LeftMargin = 0.75;
            ws_New.PageSetup.BottomMargin = 1;
            ws_New.PageSetup.CenterHorizontally = true;
            //Шапка таблицы
            Excel1.Range rangeHeader1 = ws_New.get_Range("A5", "C5").Cells;
            rangeHeader1.Font.Name = "Times New Roman";
            rangeHeader1.Font.Size = 10;
            rangeHeader1.HorizontalAlignment = XlHAlign.xlHAlignCenter;
            rangeHeader1.VerticalAlignment = XlVAlign.xlVAlignCenter;
            rangeHeader1.Borders.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
            rangeHeader1.Borders.Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin;
            ws_New.Cells[1, 1] = "КГБУЗ Богучанская РБ";
            ws_New.Cells[3, 1] = "Заправка и ремонт картриджей";
            ws_New.Cells[5, 1] = "Наименование картриджа";
            ws_New.Cells[5, 2] = "Количество";
            ws_New.Cells[5, 3] = "Дата";
            //Из dataGridView1 в Excel
            for (int i = 0; i < dataGridView1.ColumnCount; i++)
            {
                for (int j = 0; j < dataGridView1.RowCount; j++)
                {
                    ws_New.Cells[j + 6, i + 1] = (dataGridView1[i, j].Value).ToString();
                    Excel1.Range rangeBord1 = ws_New.Cells[j + 6, i + 1];
                    rangeBord1.Font.Name = "Times New Roman";
                    rangeBord1.Font.Size = 10;
                    rangeBord1.Borders.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
                    rangeBord1.Borders.Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin;
                    Excel1.Range rangeBJ = ws_New.Cells[j + 6, i + 2];
                    rangeBJ.HorizontalAlignment = XlHAlign.xlHAlignRight;
                    rangeBJ.VerticalAlignment = XlVAlign.xlVAlignCenter;
 
                }
            }
            int lastRow = ws_New.Cells.SpecialCells(Excel1.XlCellType.xlCellTypeLastCell).Row;
            ws_New.Cells[lastRow + 2, 1] = "ИТОГО:";
            ws_New.Cells[lastRow + 2, 2] = label7.Text;
            Excel1.Range rangeTotal1 = ws_New.Cells[lastRow + 2, 1];
            rangeTotal1.HorizontalAlignment = XlHAlign.xlHAlignRight;
            rangeTotal1.VerticalAlignment = XlVAlign.xlVAlignCenter;
            rangeTotal1.Font.Name = "Times New Roman";
            rangeTotal1.Font.Size = 10;
            Excel1.Range rangeTotal2 = ws_New.Cells[lastRow + 2, 2];
            rangeTotal2.HorizontalAlignment = XlHAlign.xlHAlignRight;
            rangeTotal2.VerticalAlignment = XlVAlign.xlVAlignCenter;
            rangeTotal2.Font.Name = "Times New Roman";
            rangeTotal2.Font.Size = 10;
 
            exApp_New.Visible = true;
 
            System.Runtime.InteropServices.Marshal.ReleaseComObject(exApp_New);
            exApp_New = null;
            wb_New = null;
            ws_New = null;
            System.GC.Collect();
        }
        #endregion
0
Wanzan
1 / 1 / 2
Регистрация: 23.04.2015
Сообщений: 71
28.10.2016, 07:48 15
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
#region */Вывод в EXCEL и печать/*
 
        //Вывод в EXCEL и печать
 
        Excel2.Application exApp_New1 = new Excel2.Application();
        Excel2.Workbook wb_New1 = null;
        Excel2.Worksheet ws_New1 = null;
        private void button5_Click(object sender, EventArgs e)
        {
            wb_New1 = exApp_New1.Workbooks.Add(System.Reflection.Missing.Value);
            ws_New1 = (Microsoft.Office.Interop.Excel.Worksheet)wb_New1.Worksheets.get_Item(1);
            ws_New1.Cells.Locked = false;
 
            //Объединение ячеек
            Excel2.Range rangeGroup1 = (Excel2.Range)ws_New1.get_Range("A1", "C2").Cells;
            rangeGroup1.Merge(Type.Missing);
            rangeGroup1.HorizontalAlignment = XlHAlign.xlHAlignLeft;
            rangeGroup1.VerticalAlignment = XlVAlign.xlVAlignCenter;
            rangeGroup1.Font.Name = "Times New Roman";
            rangeGroup1.Font.Size = 16;
            rangeGroup1.Locked = false;
            Excel2.Range rangeGroup2 = (Excel2.Range)ws_New1.get_Range("A3", "C3").Cells;
            rangeGroup2.Merge(Type.Missing);
            rangeGroup2.HorizontalAlignment = XlHAlign.xlHAlignCenter;
            rangeGroup2.VerticalAlignment = XlVAlign.xlVAlignCenter;
            rangeGroup2.Font.Name = "Times New Roman";
            rangeGroup2.Font.Size = 12;
 
            //Ширина столбцов
            Excel2.Range rangeWidth1 = ws_New1.Range["A1", System.Type.Missing];
            rangeWidth1.EntireColumn.ColumnWidth = 60;
            Excel2.Range rangeWidth2 = ws_New1.Range["B1", System.Type.Missing];
            rangeWidth2.EntireColumn.ColumnWidth = 16;
            Excel2.Range rangeWidth3 = ws_New1.Range["C1", System.Type.Missing];
            rangeWidth3.EntireColumn.ColumnWidth = 16;
            //Оформление листа + печать
            ws_New1.PageSetup.Orientation = XlPageOrientation.xlPortrait;
            ws_New1.PageSetup.PaperSize = XlPaperSize.xlPaperA4;
            ws_New1.PageSetup.TopMargin = 1;
            ws_New1.PageSetup.RightMargin = 0.75;
            ws_New1.PageSetup.LeftMargin = 0.75;
            ws_New1.PageSetup.BottomMargin = 1;
            ws_New1.PageSetup.CenterHorizontally = true;
            //Шапка таблицы
            Excel2.Range rangeHeader1 = ws_New1.get_Range("A5", "C5").Cells;
            rangeHeader1.Font.Name = "Times New Roman";
            rangeHeader1.Font.Size = 10;
            rangeHeader1.HorizontalAlignment = XlHAlign.xlHAlignCenter;
            rangeHeader1.VerticalAlignment = XlVAlign.xlVAlignCenter;
            rangeHeader1.Borders.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
            rangeHeader1.Borders.Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin;
            ws_New1.Cells[1, 1] = "КГБУЗ Богучанская РБ";
            ws_New1.Cells[3, 1] = "Заправка и ремонт картриджей";
            ws_New1.Cells[5, 1] = "Наименование картриджа";
            ws_New1.Cells[5, 2] = "Количество";
            ws_New1.Cells[5, 3] = "Дата";
            //Из dataGridView1 в Excel
            for (int i = 0; i < dataGridView1.ColumnCount; i++)
            {
                for (int j = 0; j < dataGridView1.RowCount; j++)
                {
                    ws_New1.Cells[j + 6, i + 1] = (dataGridView1[i, j].Value).ToString();
                    Excel2.Range rangeBord1 = ws_New1.Cells[j + 6, i + 1];
                    rangeBord1.Font.Name = "Times New Roman";
                    rangeBord1.Font.Size = 10;
                    rangeBord1.Borders.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
                    rangeBord1.Borders.Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin;
                    Excel2.Range rangeBJ = ws_New1.Cells[j + 6, i + 2];
                    rangeBJ.HorizontalAlignment = XlHAlign.xlHAlignRight;
                    rangeBJ.VerticalAlignment = XlVAlign.xlVAlignCenter;
 
                }
            }
            int lastRow = ws_New1.Cells.SpecialCells(Excel2.XlCellType.xlCellTypeLastCell).Row;
            ws_New1.Cells[lastRow + 2, 1] = "ИТОГО:";
            ws_New1.Cells[lastRow + 2, 2] = label7.Text;
            Excel2.Range rangeTotal1 = ws_New1.Cells[lastRow + 2, 1];
            rangeTotal1.HorizontalAlignment = XlHAlign.xlHAlignRight;
            rangeTotal1.VerticalAlignment = XlVAlign.xlVAlignCenter;
            rangeTotal1.Font.Name = "Times New Roman";
            rangeTotal1.Font.Size = 10;
            Excel2.Range rangeTotal2 = ws_New1.Cells[lastRow + 2, 2];
            rangeTotal2.HorizontalAlignment = XlHAlign.xlHAlignRight;
            rangeTotal2.VerticalAlignment = XlVAlign.xlVAlignCenter;
            rangeTotal2.Font.Name = "Times New Roman";
            rangeTotal2.Font.Size = 10;
 
            exApp_New1.Visible = true;
            wb_New1.PrintOutEx();
            wb_New1.Close(false, missingO, missingO);
            exApp_New1.Quit();
            System.Runtime.InteropServices.Marshal.ReleaseComObject(exApp_New1);
 
            exApp_New1 = null;
            wb_New1 = null;
            ws_New1 = null;
            System.GC.Collect();
        }
        #endregion
 
 
        //#region */Вывод в EXCEL и сохранение/*
 
        //Excel3.Application exApp_New3 = new Excel3.Application();
        //Excel3.Workbook wb_New3 = null;
        //Excel3.Worksheet ws_New3 = null;
 
        //private void button6_Click(object sender, EventArgs e)
        //{
        //    wb_New3 = exApp_New.Workbooks.Add(System.Reflection.Missing.Value);
        //    ws_New3 = (Microsoft.Office.Interop.Excel.Worksheet)wb_New3.Worksheets.get_Item(1);
        //    ws_New3.Cells.Locked = false;
 
        //    //Объединение ячеек
        //    Excel3.Range rangeGroup1 = (Excel3.Range)ws_New3.get_Range("A1", "C2").Cells;
        //    rangeGroup1.Merge(Type.Missing);
        //    rangeGroup1.HorizontalAlignment = XlHAlign.xlHAlignLeft;
        //    rangeGroup1.VerticalAlignment = XlVAlign.xlVAlignCenter;
        //    rangeGroup1.Font.Name = "Times New Roman";
        //    rangeGroup1.Font.Size = 16;
        //    rangeGroup1.Locked = false;
        //    Excel3.Range rangeGroup2 = (Excel3.Range)ws_New3.get_Range("A3", "C3").Cells;
        //    rangeGroup2.Merge(Type.Missing);
        //    rangeGroup2.HorizontalAlignment = XlHAlign.xlHAlignCenter;
        //    rangeGroup2.VerticalAlignment = XlVAlign.xlVAlignCenter;
        //    rangeGroup2.Font.Name = "Times New Roman";
        //    rangeGroup2.Font.Size = 12;
 
        //    //Ширина столбцов
        //    Excel3.Range rangeWidth1 = ws_New3.Range["A1", System.Type.Missing];
        //    rangeWidth1.EntireColumn.ColumnWidth = 60;
        //    Excel3.Range rangeWidth2 = ws_New3.Range["B1", System.Type.Missing];
        //    rangeWidth2.EntireColumn.ColumnWidth = 16;
        //    Excel3.Range rangeWidth3 = ws_New3.Range["C1", System.Type.Missing];
        //    rangeWidth3.EntireColumn.ColumnWidth = 16;
        //    //Оформление листа + печать
        //    ws_New3.PageSetup.Orientation = XlPageOrientation.xlPortrait;
        //    ws_New3.PageSetup.PaperSize = XlPaperSize.xlPaperA4;
        //    ws_New3.PageSetup.TopMargin = 1;
        //    ws_New3.PageSetup.RightMargin = 0.75;
        //    ws_New3.PageSetup.LeftMargin = 0.75;
        //    ws_New3.PageSetup.BottomMargin = 1;
        //    ws_New3.PageSetup.CenterHorizontally = true;
        //    //Шапка таблицы
        //    Excel3.Range rangeHeader1 = ws_New3.get_Range("A5", "C5").Cells;
        //    rangeHeader1.Font.Name = "Times New Roman";
        //    rangeHeader1.Font.Size = 10;
        //    rangeHeader1.HorizontalAlignment = XlHAlign.xlHAlignCenter;
        //    rangeHeader1.VerticalAlignment = XlVAlign.xlVAlignCenter;
        //    rangeHeader1.Borders.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
        //    rangeHeader1.Borders.Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin;
        //    ws_New3.Cells[1, 1] = "КГБУЗ Богучанская РБ";
        //    ws_New3.Cells[3, 1] = "Заправка и ремонт картриджей";
        //    ws_New3.Cells[5, 1] = "Наименование картриджа";
        //    ws_New3.Cells[5, 2] = "Количество";
        //    ws_New3.Cells[5, 3] = "Дата";
        //    //Из dataGridView1 в Excel
        //    for (int i = 0; i < dataGridView1.ColumnCount; i++)
        //    {
        //        for (int j = 0; j < dataGridView1.RowCount; j++)
        //        {
        //            ws_New3.Cells[j + 6, i + 1] = (dataGridView1[i, j].Value).ToString();
        //            Excel3.Range rangeBord1 = ws_New3.Cells[j + 6, i + 1];
        //            rangeBord1.Font.Name = "Times New Roman";
        //            rangeBord1.Font.Size = 10;
        //            rangeBord1.Borders.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
        //            rangeBord1.Borders.Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin;
        //            Excel3.Range rangeBJ = ws_New3.Cells[j + 6, i + 2];
        //            rangeBJ.HorizontalAlignment = XlHAlign.xlHAlignRight;
        //            rangeBJ.VerticalAlignment = XlVAlign.xlVAlignCenter;
 
        //        }
        //    }
        //    int lastRow = ws_New3.Cells.SpecialCells(Excel3.XlCellType.xlCellTypeLastCell).Row;
        //    ws_New3.Cells[lastRow + 2, 1] = "ИТОГО:";
        //    ws_New3.Cells[lastRow + 2, 2] = label7.Text;
        //    Excel3.Range rangeTotal1 = ws_New3.Cells[lastRow + 2, 1];
        //    rangeTotal1.HorizontalAlignment = XlHAlign.xlHAlignRight;
        //    rangeTotal1.VerticalAlignment = XlVAlign.xlVAlignCenter;
        //    rangeTotal1.Font.Name = "Times New Roman";
        //    rangeTotal1.Font.Size = 10;
        //    Excel3.Range rangeTotal2 = ws_New3.Cells[lastRow + 2, 2];
        //    rangeTotal2.HorizontalAlignment = XlHAlign.xlHAlignRight;
        //    rangeTotal2.VerticalAlignment = XlVAlign.xlVAlignCenter;
        //    rangeTotal2.Font.Name = "Times New Roman";
        //    rangeTotal2.Font.Size = 10;
 
        //    exApp_New3.Visible = true;
 
        //    wb_New3.SaveAs(@"D:" + label6.Text + "_TALON");
        //    wb_New3.Close(false, missingO2, missingO2);
        //    exApp_New3.Quit();
        //    System.Runtime.InteropServices.Marshal.ReleaseComObject(exApp_New3);
        //    exApp_New3 = null;
        //    wb_New3 = null;
        //    ws_New3 = null;
        //    System.GC.Collect();
 
        //    this.Hide();
 
        //    ////Надо сделать очистку элементов формы при сохранении и переподключение к БД
 
        //    //label6.Text = "";
        //    //textBox2.Text = "";
        //    //comboBox1.Text = null;
        //    //textBox1.Text = null;
        //    //dataGridView1.Rows.Clear();
 
        //    //DataSet ds = new DataSet();
        //    //SqlConnection cnS = new SqlConnection(connStr);
        //    //SqlCommand cmS = cnS.CreateCommand();
        //    //cmS.CommandText = "SELECT talon_ID FROM talon_List";
        //    //cnS.Open();
 
        //    //SqlDataReader rd = cmS.ExecuteReader();
        //    //while (rd.Read())
        //    //{
        //    //    int test = rd.GetOrdinal("talon_ID");
        //    //    label3.Text = Convert.ToString(rd.GetValue(test));
        //    //}
        //    //cnS.Close();
 
        //    //int oldNum;
        //    //int num;
        //    //oldNum = Int32.Parse(label3.Text);
        //    //num = 1;
        //    //label6.Text += (oldNum + num);
        //}
 
        //#endregion
 
 
        #region */Запись в БД и dataGridView1/*
 
        private void button1_Click_1(object sender, EventArgs e)
        {
            SqlConnection conS = new SqlConnection(connStr);
            conS.Open();
            string comStr = "INSERT INTO talon_List (cart_Name_ID, talon_ID, cart_Name, cart_Count, curr_Date)" +
            "VALUES ('" + textBox2.Text + "', '" + label6.Text + "', '" + comboBox1.Text + "', '" + textBox1.Text + "', '" + dateTimePicker1.Value.ToString("dd/MM/yyyy") + "')";
            SqlCommand comS = new SqlCommand(comStr, conS);
            comS.ExecuteNonQuery();
            this.talon_ListTableAdapter.Fill(this.talonsDataSet1.talon_List);
            talon_ListTableAdapter.Update(this.talonsDataSet1.talon_List);
            this.talonsDataSet1.AcceptChanges();
            conS.Close();
            dataGridView1.Rows.Add(comboBox1.Text, textBox1.Text, dateTimePicker1.Value.ToString("dd/MM/yyyy"));
 
            double Totall = 0;
            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                if (row.Cells[2].Value != null && row.Cells[2].Value.ToString() != "")
                    Totall += Convert.ToDouble(row.Cells[1].Value.ToString());
                else
                    Totall += 0;
            }
            label7.Text = Totall.ToString();
        }
        #endregion
 
        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!(Char.IsDigit(e.KeyChar)))
            {
                if (e.KeyChar != (char)Keys.Back)
                {
                    e.Handled = true;
                }
            }
        }
 
        
    }
}
0
Wanzan
1 / 1 / 2
Регистрация: 23.04.2015
Сообщений: 71
28.10.2016, 07:49 16
Вот сам проект.
0
Вложения
Тип файла: rar cartListRepEx.rar (887.5 Кб, 45 просмотров)
Serg34
90 / 90 / 33
Регистрация: 20.09.2014
Сообщений: 427
Записей в блоге: 3
Завершенные тесты: 1
01.11.2016, 13:11 17
Цитата Сообщение от Wanzan Посмотреть сообщение
using Excel1 = Microsoft.Office.Interop.Excel; //Вывод из dataGridView1 в Excel и его открытие
using Excel2 = Microsoft.Office.Interop.Excel; //Вывод из dataGridView1 в Excel + Печать без открытия
Excel1 и Excel2 - это псевдонимы пространства имен Microsoft.Office.Interop.Excel. То есть вы инструктируете компилятор, что вместо длинного названия Вы будете писать короткое, также как в реальной жизни: Вова = Владимир и Володя = Владимир. Это ни в коем случае не значит, что будет создано два разных Владимира, это Вы даете понять, что означают Ваши сокращения.
Естественно одной инструкции (using Excel = Microsoft.Office.Interop.Excel; ) достаточно.
Цитата Сообщение от Wanzan Посмотреть сообщение
в диспетчере задач появляются сразу два процесса EXCEL.exe
Все дело в таких строках:
Цитата Сообщение от Wanzan Посмотреть сообщение
Excel2.Application exApp_New1 = new Excel2.Application();
Вы инициализируете поле в теле класса (не в методах, в том числе не в конструкторах). Такая инициализация осуществляется до работы конструктора и в Вашем случае открывает Excel. Попробуйте поставить точку останова на такой строчке и на конструкторе - наглядно все поймете.
1
Wanzan
1 / 1 / 2
Регистрация: 23.04.2015
Сообщений: 71
11.11.2016, 10:42 18
Serg34,
подскажите как это сделать в методе или конструкторе.
0
Serg34
90 / 90 / 33
Регистрация: 20.09.2014
Сообщений: 427
Записей в блоге: 3
Завершенные тесты: 1
11.11.2016, 10:43 19
Wanzan, Что "это"?
1
Wanzan
1 / 1 / 2
Регистрация: 23.04.2015
Сообщений: 71
11.11.2016, 10:44 20
Serg34,
Excel2.Application exApp_New1 = new Excel2.Application();
сделать в методе или конструкторе.
0
11.11.2016, 10:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.11.2016, 10:44

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

Datagridview экспорт в Excel и исключение некоторых данных
Привет, вот я так экспортирую из datagridview в Excel private void...

экспорт из datagridview в excel
Здравствуйте!помогите вернуть отредактированный фаил datagridview в...


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

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

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