Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

//объект приложения. Microsoft.Office.Interop.Excel.Application ExcelApp;. //объект окна Excel. Microsoft.Office.Interop.Excel.Window ExcelWindow;




//объект приложения

Microsoft. Office. Interop. Excel. Application ExcelApp;

//объект окна Excel

Microsoft. Office. Interop. Excel. Window ExcelWindow;   

//объект рабочей книги

Microsoft. Office. Interop. Excel. Workbook WorkBook;    

//набор листов Excel

Microsoft. Office. Interop. Excel. Sheets ExcelSheets;   

//объект рабочего листа

Microsoft. Office. Interop. Excel. Worksheet WorkSheet;  

//диапазон ячеек

Microsoft. Office. Interop. Excel. Range range;          

 

Для создания нового отчета в Excel на основе заданного шаблона опишем метод OpenExcelDocument. Имя файла шаблона передается функции в качестве параметра. Текст метода:

 

private void OpenExcelDocument(string FileName)

{

//создать новый объект приложения Excel

ExcelApp = new Microsoft. Office. Interop. Excel. Application();

//задать файл шаблона

object template = System. Windows. Forms. Application. StartupPath + @" \reports\" + FileName;

//применить шаблон

ExcelApp. Workbooks. Add(template);

//получить первую рабочую книгу файла

WorkBook = ExcelApp. Workbooks[1];

//получить список листов рабочей книги

ExcelSheets = WorkBook. Worksheets;

//выбрать первый лист

WorkSheet = (Microsoft. Office. Interop. Excel. Worksheet) ExcelSheets. get_Item(1);

}

 

Следующие два метода предназначены занесения данных в ячейки Excel. В качестве параметров им передаются имя ячейки и значение в формате строки, которое нужно записать в ячейку. Функция PutCellBorder дополнительно рисует тонкую рамку вокруг выбранной ячейки.

 

private void PutCell(string cell, string val)

{

//получить диапазон, соответствующий выбранной ячейке

range = WorkSheet. get_Range(cell, Type. Missing);

//занести в ячейку значение

range. Value2 = val;

}

private void PutCellBorder(string cell, string val)

{

//вызвать функцию занесения в ячейку значения

PutCell(cell, val);

//нарисовать границу вокруг ячейки

range. BorderAround (Microsoft. Office. Interop. Excel. XlLineStyle. xlContinuous, Microsoft. Office. Interop. Excel. XlBorderWeight. xlThin, Microsoft. Office. Interop. Excel. XlColorIndex. xlColorIndexAutomatic, Type. Missing);

}

 

Для запуска процесса формирования списка поместите на главную форму программы кнопку «Список в Excel». Текст ее обработчика с комментариями приведен ниже:

 

private void ExcelButton_Click(object sender, EventArgs e)

{

//создать документ на основе шаблона

OpenExcelDocument(" spisok. xlsx" );

//занести текущую дату в ячейку D1

PutCell(" D1", DateTime. Now. ToShortDateString());

           

//i - порядковый номер записи

int i = 1;

//просмотреть все строки таблицы Phones

foreach (DataRow row in dataSet1. Phones)

{

   //занести в столбец А порядковый номер записи

   PutCellBorder(" A" + (i + 5). ToString(), i. ToString());

   //получить строку из родительской таблицы Contacts

   DataRow contact = row. GetParentRow(dataSet1. Relations [" FK_Contacts_Phones" ]);

   //занести в столбец B фамилию абонента

   PutCellBorder(" B" + (i + 5). ToString(), contact[" Fam" ]. ToString());

   //занести в столбец C имя абонента

   PutCellBorder(" C" + (i + 5). ToString(), contact[" Name" ]. ToString());

   //занести в столбец D номер телефона

   PutCellBorder(" D" + (i + 5). ToString(), row[" Phone" ]. ToString());

   i++;

}

           

//сделать приложение Excel видимым

ExcelApp. Visible = true;

}

Внешний вид сформированного программой списка будет выглядеть примерно так (рисунок 4. 3):

 

Рисунок 4. 3 – Внешний вид сформированного в Excel отчета

 

В данном отчете просто отображаются все номера телефонов из справочника. Модифицируем процесс его формирования так, чтобы имелась возможность их группировки по фамилиям людей (рисунок 4. 4).

 

Рисунок 4. 4 – Отчет с группировкой данных

Для реализации подобных действий обработчик нажатия кнопки нужно модифицировать следующим образом:

 

private void ExcelButton_Click(object sender, EventArgs e)

{

//создать документ на основе шаблона

OpenExcelDocument(" spisok. xlsx" );

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...