Private void OpenExcelDocument(string FileName)
{
//создать новый объект приложения Excel
ExcelApp = new Microsoft.Office.Interop.Excel.Application();
//задать файл шаблона
object template = 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.xls");
//занести текущую дату в ячейку D1
PutCell("D1", DateTime.Now.ToShortDateString());
//i - порядковый номер записи
int i = 1;
//просмотреть все строки таблицы Phones