Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/315: Рейтинг темы: голосов - 315, средняя оценка - 4.85
4 / 4 / 1
Регистрация: 14.01.2010
Сообщений: 17

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

16.09.2010, 11:31. Показов 68350. Ответов 70
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Экспорт данных в Excel из DataGridView. Как это делается помогите пожалуйста? Из БД Экспорт получается но я хотел после компиляции из DataGridView экспортировать.
1
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.09.2010, 11:31
Ответы с готовыми решениями:

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

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

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

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

Решение

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;
думаю , это то, что вы ищите)
28
4 / 4 / 1
Регистрация: 14.01.2010
Сообщений: 17
20.09.2010, 16:06  [ТС]
Большое спасибо Helios1.618 это код работает.
1
43 / 11 / 3
Регистрация: 16.12.2008
Сообщений: 107
05.03.2011, 17:34
подскажите, как запихнуть код из 2 поста так, чтобы это все работало при сохранении через меню. и что нужно дописать в using помимо этого?
0
87 / 86 / 13
Регистрация: 21.10.2010
Сообщений: 349
10.03.2011, 18:05
Цитата Сообщение от Napster Посмотреть сообщение
подскажите, как запихнуть код из 2 поста так, чтобы это все работало при сохранении через меню. и что нужно дописать в using помимо этого?
в пространстве имен ни чего не надо дописывать, так как там все уже описано, а вот в referense необходимо добавить библиотеку Microsoft.Interop.Excel.
Для меню все просто, делаете подпрограмму того кода который представлен выше и на событие меню онклик вставляете подпрограмму.
Можно даже для разных DataGridView сделать.
2
2 / 2 / 0
Регистрация: 20.11.2009
Сообщений: 51
14.06.2011, 00:26
Очень помогло.ВЕРИ ДЯКУЙ!!!!
0
5 / 5 / 7
Регистрация: 31.03.2013
Сообщений: 228
07.05.2013, 15:24
что нужно добавить в данный код, чтоб экспорт шел в уже созданный файл exsel, в определённые ячейки?
0
 Аватар для Kruds
708 / 708 / 226
Регистрация: 04.03.2013
Сообщений: 1,384
07.05.2013, 15:38
C#
1
2
excelapp = new Excel.Application(); 
 excelapp.Workbooks.Open(@"SomeDisc:/Somedirectory/Filename.xls");
1
5 / 5 / 1
Регистрация: 17.02.2013
Сообщений: 18
09.06.2014, 21:20
блин, у меня была та же ошибка из-за того, что обращался к ячейкам по индексу [0, 0] ><
0
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 16
11.01.2015, 12:20
подскажите по подробнее об экспорте в уже созданный excel файл, а то не получается, открываются два файла, созданный и новый создается.
0
0 / 0 / 2
Регистрация: 23.07.2014
Сообщений: 7
05.06.2015, 12:24
Господа, такая проблема. Поменял немного код ( нужно чтобы выводил инфу в созданную форму с 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
2 / 2 / 2
Регистрация: 23.04.2015
Сообщений: 71
26.10.2016, 06:03
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
999 / 358 / 135
Регистрация: 27.10.2006
Сообщений: 764
26.10.2016, 23:54
меня в ваших кодах по 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
2 / 2 / 2
Регистрация: 23.04.2015
Сообщений: 71
28.10.2016, 07:47
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
2 / 2 / 2
Регистрация: 23.04.2015
Сообщений: 71
28.10.2016, 07:48
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;
                }
            }
        }
 
        
    }
}
1
2 / 2 / 2
Регистрация: 23.04.2015
Сообщений: 71
28.10.2016, 07:49
Вот сам проект.
Вложения
Тип файла: rar cartListRepEx.rar (887.5 Кб, 200 просмотров)
0
 Аватар для Serg34
100 / 100 / 33
Регистрация: 20.09.2014
Сообщений: 457
Записей в блоге: 3
01.11.2016, 13:11
Цитата Сообщение от 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
2 / 2 / 2
Регистрация: 23.04.2015
Сообщений: 71
11.11.2016, 10:42
Serg34,
подскажите как это сделать в методе или конструкторе.
0
 Аватар для Serg34
100 / 100 / 33
Регистрация: 20.09.2014
Сообщений: 457
Записей в блоге: 3
11.11.2016, 10:43
Wanzan, Что "это"?
1
2 / 2 / 2
Регистрация: 23.04.2015
Сообщений: 71
11.11.2016, 10:44
Serg34,
Excel2.Application exApp_New1 = new Excel2.Application();
сделать в методе или конструкторе.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.11.2016, 10:44
Помогаю со студенческими работами здесь

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

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

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

Datagridview экспорт в Excel и исключение некоторых данных
Привет, вот я так экспортирую из datagridview в Excel private void ecxelToolStripMenuItem_Click(object sender, EventArgs e) { ...

Экспорт DataGridView to Excel
Нашёл на codeproject статью &quot;Exporting a DataGridView to Excel in .NET 2.0 (C# code)&quot;. Там говорится, что для начала нужно создать объект...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru