Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
Lina_A
0 / 0 / 1
Регистрация: 27.01.2015
Сообщений: 107
1

Заполнить готовый шаблон Excel данными из запроса к бд SQL

25.05.2016, 21:28. Просмотров 1394. Ответов 4
Метки нет (Все метки)

на форме кнопка одна "вывести отчет", при нажатии должен открываться уже готовый шаблон excel и за счет запроса SQL (который нужно прописать в коде) должен отобразить нужные данные ( данные берутся из Бд SQL Server)
как это осуществить?
я могу только вывести данные из datagridview в excel, но то, как мне нужно, я не могу найти в интернете. плохо ищу видать. помогите с кодом.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.05.2016, 21:28
Ответы с готовыми решениями:

Как заполнить данными шаблон Excel
Здравствуйте! Как заполнить Excel таблицу? И если поможете, то можно еще узнать как нажать Enter в...

Быстрая выгрузка в готовый шаблон Excel
Добрый день! Необходимо было создать внешнюю оболочку для пользователя, которая запускала бы...

Заполнить данными запроса табличную часть (управляемые формы)
Доброго времени суток! Имеется форма Есть регистр Суть вопроса: Нужно при нажатии...

Заполнить comboBox данными из Excel
Добрый день, уважаемые знатоки :) Прошу сильно не пинать, форум почитал, но не разобраться :-(...

Экпорт запроса в шаблон Excel
Создана функция экспорта запроса в шаблон Excell, подскажите как указать конкретно лист для...

4
Igr_ok
530 / 428 / 200
Регистрация: 04.08.2015
Сообщений: 1,178
25.05.2016, 22:03 2
Этот код я использовал еще при работе с 2003-м офисом. Если у вас файлы xlsx, то методы Workbooks.Open и xls.SaveAs могут отличаться.
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
using System.Data;
using Excel = Microsoft.Office.Interop.Excel;
 
/// <summary>
        /// Вставляет DataTable в существующий шаблон Excel PathToExcelTemplateFile и перезаписывает его в PathToSaveFile
        /// </summary>
        /// <param name="OrderDT"></param>
        /// <param name="SelectRangeRow">Номер строки ячейки, с которой начинается вставка</param>
        /// <param name="SelectRangeColumn">Номер столбца ячейки, с которой начинается вставка</param>
        /// <param name="PathToTamplate"></param>
        /// <param name="PathToSaveFile"></param>
        /// <returns></returns>
        public static string SaveData(DataTable OrderDT, int SelectRangeRow, int SelectRangeColumn, string PathToExcelTemplateFile, string PathToSaveFile)
        {
            Excel.Application app = new Excel.Application();
            try
            {
 
                app.Visible = false;
                Excel.Workbook xls = app.Workbooks.Open(PathToExcelTemplateFile, 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 worksheetxls = (Excel.Worksheet)xls.Sheets[1];
                ((Microsoft.Office.Interop.Excel._Worksheet)worksheetxls).Activate();
                WriteClientData(OrderDT, worksheetxls, SelectRangeRow, SelectRangeColumn);
                xls.SaveAs(PathToSaveFile, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange,
                    Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheetxls);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(xls);
                app.Quit();
                System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
                GC.Collect();
                return "";
            }
            catch (Exception er)
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
                GC.Collect();
                return er.Message;
            }
        }
 
        private static void WriteClientData(DataTable dt, Excel.Worksheet oWorkSheet, int numrow, int columnrow)
        {
            object[,] dataExport = new object[dt.Rows.Count, dt.Columns.Count];
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                for (int k = 0; k < dt.Columns.Count; k++)
                {
                    dataExport[i, k] = dt.Rows[i][k];
                }
            }
            Excel.Range rg = oWorkSheet.get_Range(oWorkSheet.Cells[numrow, columnrow], oWorkSheet.Cells[numrow + dt.Rows.Count - 1, columnrow + dt.Columns.Count - 1]);
            rg.set_Value(Excel.XlRangeValueDataType.xlRangeValueDefault, dataExport);
        }
0
Lina_A
0 / 0 / 1
Регистрация: 27.01.2015
Сообщений: 107
26.05.2016, 12:30  [ТС] 3
Igr_ok, не пойму, а где запросы?
0
Igr_ok
530 / 428 / 200
Регистрация: 04.08.2015
Сообщений: 1,178
26.05.2016, 12:53 4
Цитата Сообщение от Lina_A Посмотреть сообщение
не пойму, а где запросы?
Я показал, как результат запроса сохранить в Excel. Если у вас проблема с формированием запроса, то нужно было об этом написать и показать код.
0
Lina_A
0 / 0 / 1
Регистрация: 27.01.2015
Сообщений: 107
26.05.2016, 19:46  [ТС] 5
тема актульна
0
26.05.2016, 19:46
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2016, 19:46

Заполнить из 1С шаблон договора в Excel
Здравствуйте. Такой вопрос. Есть шаблон договора в Excel, нужно заполнить графы этого договора из...

Заполнение DropDownList данными из SQL запроса
Ребята, добрый день! Посмотрите код, что-то я запуталась как всегда ( Имеем SQL запрос ...

Заполнить ComboBox данными из листа Excel
Как сделать, чтобы список составлялся из данных на листе ексель, при этом данные могут...


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

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

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