|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - C# Экспорт DataGridView в Excel |
|
.NET - C# Экспорт DataGridView в Excel
|
Ветеран Сообщения: 5624 |
Это не вопрос, а скорее в помощь программистам. Прилагаю код функции, осуществляющей выгрузку DataGridView в Excel. Код предельно прост, можно из него сделать мааааленькую dll-ку и пользоваться в проектах.
public void ExportToExcel(DataGridView grid) { ApplicationClass Excel = new ApplicationClass(); XlReferenceStyle RefStyle = Excel.ReferenceStyle; Excel.Visible = true; Workbook wb = null; String TemplatePath = System.Windows.Forms.Application.StartupPath + @"\Экспорт данных.xlt"; try { wb = Excel.Workbooks.Add(TemplatePath); // !!! } catch (System.Exception ex) { throw new Exception("Не удалось загрузить шаблон для экспорта " + TemplatePath + "\n" + ex.Message); } Worksheet ws = wb.Worksheets.get_Item(1) as Worksheet; for (int j = 0; j < grid.Columns.Count; ++j) { (ws.Cells[1, j + 1] as Range).Value2 = grid.Columns[j].HeaderText; for (int i = 0; i < grid.Rows.Count; ++i) { object Val = grid.Rows[i].Cells[j].Value; if (Val != null) (ws.Cells[i + 2, j + 1] as Range).Value2 = Val.ToString(); } } ws.Columns.EntireColumn.AutoFit(); Excel.ReferenceStyle = RefStyle; ReleaseExcel(Excel as Object); } private void ReleaseExcel(object excel) { // Уничтожение объекта Excel. Marshal.ReleaseComObject(excel); // Вызываем сборщик мусора для немедленной очистки памяти GC.GetTotalMemory(true); } using Microsoft.Office.Interop; using Microsoft.Office.Interop.Excel; using System.Runtime.InteropServices; Далее просто вызываем функцию ExportToExcel(dataGridView1);. Вроде бы просто ![]() Для большей надежности выгрузки можно вначале функции написать Excel.Visible = false; а в конце выгрузки Excel.Visible = true; Таким образом, сначала в фоновом режиме заполнятся данные, а уж потом отобразится окно Excel. |
|
------- Отправлено: 06:05, 30-09-2011 |
В Поисках Истины Сообщения: 802
|
Профиль | Отправить PM | Цитировать Недавно как раз делал экспорт в excel, но воспользовался другим методом:
Получилось все вроде бы хорошо ![]() |
------- Отправлено: 07:37, 30-09-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать Тоже неплохо
![]() Разница в том, что твой код формирует файл в фоновом режиме и через ole провайдера. Мой код сначала активирует окно Excel и в визуальном режиме отображает заполнение. Это имеет свои недостатки - нежелательно прокручивать листы во время работы, иначе будет исключение доступа. А в целом можно использовать оба способа, кому как удобно. В моем случае можно избавиться от вечных приколов Excel, когда строку типа 01.06 он выводит в виде 1 июн - надо в шаблоне выставить тип нужного столбца в текстовый. |
------- Отправлено: 07:43, 30-09-2011 | #3 |
В Поисках Истины Сообщения: 802
|
Профиль | Отправить PM | Цитировать Цитата Delirium:
![]() Таких полей у меня не было, поэтому не столкнулся с этим и не знал... |
|
------- Отправлено: 08:20, 30-09-2011 | #4 |
Новый участник Сообщения: 1
|
Профиль | Сайт | Отправить PM | Цитировать check the following link that explain how to export datagridview to excel - c# full source code
http://vb.net-informations.com/excel...w_to_excel.htm lee. |
|
Отправлено: 21:22, 16-04-2012 | #5 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать Gever_Lances@fb, и что? Приведенный тобой код немногим отличается от нашего. Или просто до копилки?
|
------- Отправлено: 00:59, 17-04-2012 | #6 |
Новый участник Сообщения: 1
|
Профиль | Отправить PM | Цитировать Спасибо автору!!!
|
Отправлено: 17:42, 09-06-2012 | #7 |
Новый участник Сообщения: 19
|
Профиль | Отправить PM | Цитировать Спасибо автору лишь хочу добавить где можно скачать dll Microsoft.Office.Interop
Office XP Office 2003 Office 2007 Office 2010 |
Отправлено: 16:00, 04-12-2012 | #8 |
Новый участник Сообщения: 1
|
Профиль | Сайт | Отправить PM | Цитировать А у меня Visual Studio 2010 ругается на ApplicationClass, что делать? Кучу сайтов перерыла,ответа не нашла(
|
Отправлено: 20:51, 15-05-2015 | #9 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBA - Помогите написать макрос в Excel, экспорт данных из Excel в Word. | E.v.g | Программирование и базы данных | 7 | 03-05-2018 22:18 | |
.NET - Обновление текущей строки DataGridView | Delirium | Программирование и базы данных | 0 | 28-03-2011 04:55 | |
.NET - DataGridView с Checkbox | LilLoco | Программирование и базы данных | 6 | 15-10-2010 01:21 | |
.NET - DataGridView и C# | Efsey | Программирование и базы данных | 3 | 22-09-2010 07:21 | |
VBA - DataGridView | MuCTEP | Программирование и базы данных | 9 | 23-07-2008 13:52 |
|