Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/47: Рейтинг темы: голосов - 47, средняя оценка - 4.60
3 / 3 / 0
Регистрация: 15.12.2014
Сообщений: 28
1

Вывод данных и DatagridView в Excel

06.02.2015, 21:33. Показов 9242. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, уважаемые знатоки!

Вот рабочий код, который выводит из DatagridView в Excel. Выводит всё, что есть в гриде.

Возможно ли сделать так, что бы вывод в Excel осуществлялся по одной выбранной в DatagridView записи?

Выбрал в гриде запись, вывел в эксель. выбрал вторую запись и т.д.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
        private void button3_Click(object sender, EventArgs e)
        {
            Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();
            Excel.Workbook ExcelWorkBook;
            Excel.Worksheet ExcelWorkSheet;
            ExcelWorkBook = ExcelApp.Workbooks.Add(System.Reflection.Missing.Value);
            ExcelWorkSheet = (Excel.Worksheet)ExcelWorkBook.Worksheets.get_Item(1);
            ExcelWorkSheet.Cells[1, 7] = "Квитанция";
 
            for (int i = 2; i < dgv_main.Columns.Count + 1; i++)
            {
                ExcelWorkSheet.Cells[3, i] = dgv_main.Columns[i-1].HeaderText;
            }
            for (int i = 1; i < dgv_main.Rows.Count; i++)
            {
                for (int j = 1; j < dgv_main.Columns.Count; j++)
                {
                    ExcelWorkSheet.Cells[i + 3, j + 0] = dgv_main.Rows[i].Cells[j].Value.ToString();
                }
            }
 
            ExcelApp.Visible = true;
        }
1
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.02.2015, 21:33
Ответы с готовыми решениями:

Вывод данных datagridview в Excel
На второй форме есть заполненный массив datagriedview. Необходимо по нажатию на кнопку передать...

Выбор данных из DataGridView и вывод их в Excel
Необходимо выбрать данные из DataGridView и вывести их в Эксель следующим образом: структура...

Вывод данных из excel в DataGridView с сохранением нулей после запятой
Здравствуйте. Возникла проблема при считывании в DataGridView числовых значений с 2-3 разрядами...

Вывод из DataGridView в Excel
Здравствуйте, как при выводе из datagridview(dgv) в Excel, сделать автоматический подбор ширины...

14
2080 / 1238 / 464
Регистрация: 20.12.2014
Сообщений: 3,237
06.02.2015, 22:10 2
Лучший ответ Сообщение было отмечено Барсег как решение

Решение

Выведите этот процесс на отдельную кнопку:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
        private void button3_Click(object sender, EventArgs e)
        {
            Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();
            Excel.Workbook ExcelWorkBook;
            Excel.Worksheet ExcelWorkSheet;
            ExcelWorkBook = ExcelApp.Workbooks.Add(System.Reflection.Missing.Value);
            ExcelWorkSheet = (Excel.Worksheet)ExcelWorkBook.Worksheets.get_Item(1);
            ExcelWorkSheet.Cells[1, 7] = "Квитанция";
 
            for (int i = 2; i < dgv_main.Columns.Count + 1; i++)
            {
                ExcelWorkSheet.Cells[3, i] = dgv_main.Columns[i-1].HeaderText;
            }
        }
        int k = 4;
        private void button4_Click(object sender, EventArgs e)
        {
            for (int j = 1; j < dgv_main.Columns.Count; j++)
            {
                 ExcelWorkSheet.Cells[k, j + 0] = dgv_main.CurrentRow.Cells[j].Value.ToString();
             }
         k = k + 1;
         }
Выделяйте строку и жмите кнопку.
1
3 / 3 / 0
Регистрация: 15.12.2014
Сообщений: 28
06.02.2015, 22:28  [ТС] 3
chumich, огромное Вам спасибо!
0
3 / 3 / 1
Регистрация: 23.09.2014
Сообщений: 53
09.02.2015, 21:57 4
Цитата Сообщение от Барсег Посмотреть сообщение
Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();
Excel.Workbook ExcelWorkBook;
Excel.Worksheet ExcelWorkSheet;
А какое использовалось пространство имён для этого?
Пробовал
C#
1
using Microsoft.Office.Interop.Excel;
Но чёт не канает
0
2080 / 1238 / 464
Регистрация: 20.12.2014
Сообщений: 3,237
09.02.2015, 22:10 5
Цитата Сообщение от Felagund Посмотреть сообщение
Но чёт не канает
Почему? Interop и используется. Только надо предварительно сделать в референсах ссылку на библиотеку.
0
3 / 3 / 1
Регистрация: 23.09.2014
Сообщений: 53
09.02.2015, 22:15 6
Цитата Сообщение от chumich Посмотреть сообщение
Почему? Interop и используется. Только надо предварительно сделать в референсах ссылку на библиотеку.
Ссылку сделал, иначе бы юзинг не смог добавить, однако, Excel в строке Excel.Workbook ExcelWorkBook; и других подобных строках компилятор всё равно подчёркивает и говорит что пропущена ссылка на сборку или директива using.
0
2080 / 1238 / 464
Регистрация: 20.12.2014
Сообщений: 3,237
09.02.2015, 22:25 7
Не видя проекта, не могу точно сказать в чем у вас дело. Выложите - посмотрю. Могу еще дать хорошую ссылку - сверьтесь с тем, что там написано: всё ли у вас так.
http://wladm.narod.ru/C_Sharp/comexcel.html#0
1
3 / 3 / 1
Регистрация: 23.09.2014
Сообщений: 53
09.02.2015, 22:42 8
Думал может дело в том, что мой проект написан в Express версии, но создал пустой проект на полной и проблема та же. Прикладываю пустой проект с проблемной строкой.
test2.7z
1
3 / 3 / 0
Регистрация: 15.12.2014
Сообщений: 28
09.02.2015, 22:47  [ТС] 9
Если кто может сказать, как динамически нарисовать сетку в экселе?
Всем большое спасибо.

ExcelWorkSheet.Cells.get_Range("A3", "P4").Borders.LineStyle = Excel.XlLineStyle.xlContinuous;

как определить, выделить всё что я вывел из грида и нарисовать таблицу?

Добавлено через 2 минуты
Цитата Сообщение от Felagund Посмотреть сообщение
А какое использовалось пространство имён для этого?
Пробовал
C#
1
using Microsoft.Office.Interop.Excel;
Но чёт не канает
using Microsoft.Office.Interop;
using Excel = Microsoft.Office.Interop.Excel;

Могу весь проект скинуть, мне не жалко Но опытный программист посмотрит, будет смеяться Я уже сам вижу, что можно писать иначе, а не как я...
1
2080 / 1238 / 464
Регистрация: 20.12.2014
Сообщений: 3,237
09.02.2015, 22:51 10
Цитата Сообщение от Барсег Посмотреть сообщение
как определить, выделить всё что я вывел из грида и нарисовать таблицу
Гляньте по той же ссылке, выше. Там много приемов работы с Excel, в том числе и рисование таблиц, по-моему.

Добавлено через 3 минуты
Felagund, точно, Барсег прав, что-то я сразу не обратил внимание :
using Excel = Microsoft.Office.Interop.Excel;
0
3 / 3 / 0
Регистрация: 15.12.2014
Сообщений: 28
09.02.2015, 22:53  [ТС] 11
Цитата Сообщение от chumich Посмотреть сообщение
Гляньте по той же ссылке, выше. Там много приемов работы с Excel, в том числе и рисование таблиц, по-моему.

Добавлено через 3 минуты
Felagund, точно, Барсег прав, что-то я сразу не обратил внимание :
Спасибо Вам, я читал, но там тоже как у меня диапазон заранее известен.
0
2080 / 1238 / 464
Регистрация: 20.12.2014
Сообщений: 3,237
09.02.2015, 22:57 12
Цитата Сообщение от Барсег Посмотреть сообщение
но там тоже как у меня диапазон заранее известен.
А вам нужно в зависимости от того, что выводится каждый раз по разному?
0
3 / 3 / 1
Регистрация: 23.09.2014
Сообщений: 53
09.02.2015, 22:58 13
Спасибо, теперь всё норм.
0
3 / 3 / 0
Регистрация: 15.12.2014
Сообщений: 28
09.02.2015, 22:59  [ТС] 14
Цитата Сообщение от chumich Посмотреть сообщение
А вам нужно в зависимости от того, что выводится каждый раз по разному?
Именно так.
0
2080 / 1238 / 464
Регистрация: 20.12.2014
Сообщений: 3,237
09.02.2015, 23:17 15
Могу предложить два варианта:
1. Если известна первая ячейка (левая верхняя угловая), куда выводится таблица и кроме таблицы данных на листе нет, то используя код:
C#
1
2
LastRow = ThisWorkbook.ActiveSheet.Cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row;
LastCol = ThisWorkbook.ActiveSheet.Cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByColumns).Coloumn;
находите номер последних строчки и столбца таблицы, выделяете программно получившийся диапазон и рисуете (это, я так понял вы умеете). Код, правда, из VBA переделан, но думаю, что должен работать. В крайнем случае по всплывающим подсказкам можно его поправить или по ссылке посмотреть - там должно быть что-то аналогичное.
2. Если есть другие данные, то можно по первой строчке пустить цикл перебора значений с условием: при нахождении пустой ячейки - вывести № столбца (это будет граница диапазона). И тоже самое сделать по первому столбцу для определения последней заполненной строчки таблицы. Ну, а дальше - как в первом варианте.
0
09.02.2015, 23:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.02.2015, 23:17
Помогаю со студенческими работами здесь

Вывод в Excel из DataGridView
Здравствуйте, есть код: Microsoft.Office.Interop.Excel.Application ExcelApp = new...

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

Вывод содержимого Excel в DataGridView
Помогите присоединить в Visual Studio таблицу из Ecxel к приложению. Хочу вывести ее в компонент...

Поиск по Excel и вывод в datagridview
Здравствуйте,выбираем в combobox из выпадающего списка значение и ищем все совпадения по столбцу D,...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru