- •Назначение платформы .Net Framework.
- •Версии платформы .Net
- •Общие концепции синтаксиса языка с#
- •Система типов clr и языка c#. Типы-значения и ссылочные типы
- •Система типов clr и языка c#. Преобразование типов
- •Идентификаторы, ключевые слова и литералы в языке c#
- •Допустимые элементы класса
- •Классы. Модификаторы доступа для элементов и типов
- •Классы. Использование класса
- •Методы. Описание метода. Вызов метода
- •Описание метода
- •Вызов метода
- •12, 13. Интерфейсы в языке c#. Объявление и реализация интерфейсов
- •14. Универсальные шаблоны. Универсальные классы и структуры
- •Универсальные классы и структуры
- •15. Универсальные шаблоны. Ограничения на параметры универсальных типов
- •16. Делегаты в языке с#
- •17. Анонимные методы и лямбда-выражения в языке c#
- •18. Понятие Пространства имен. Применяемые пространства имен в .Net.
- •19. Препроцессорные директивы
- •20. Создание проекта в Visual Studio. Интерфейс среды.
- •21. Настройка внешнего вида и поведения формы. Добавление элементов управления. Категории элементов.
- •22. Создание mdi-приложений. Главное и дочерние окна. Упорядочивание mdi-окон
- •23. Работа с текстовыми файлами. Запись, чтение, открытие, создание.
- •24, 25, 26 Сериализация объектов в .Net.
- •27. Жизненный цикл объектов. Алгоритм «сборки мусора» Жизненный цикл объектов
- •Сборщик мусора
- •28. Жизненный цикл объектов. Финализаторы
- •29. Xml. Правило построения xml-документов Понятие о языке xml
- •Простейший xml-документ
- •30. Создание, сохранение, загрузка xml Создание, сохранение, загрузка xml
- •31. Состав и взаимодействие сборок
- •32 Многопоточное программирование. Класс Thread. Основные свойства класса.
- •33 Многопоточное программирование. Пул потоков
- •34. Синхронизация потоков
- •35, 36, 37. Аспекты безопасности .Net
- •35 Аспекты безопасности .Net. Разрешение на доступ
- •36 Аспекты безопасности .Net. Изолированные хранилища
- •37 Аспекты безопасности .Net. Криптография
- •38. Работа с ключами реестра в .Net.
- •43. Методы доступа к субд.
- •44. Метод доступа ado .Net.
- •45 Работа с элементами управления DataSet.
- •46. Создание базы данных ms sql server.
- •47. Соединение с базой данных. Открытие и закрытие соединения с базой данных.
- •48. Адаптер SqlDataAdapter. Запросы sql.
- •49 Разработка Windows приложений с использованием com объектов
- •50. Работа с com сервером Excel. Запуск и закрытие Excel из приложения на c#. Создание рабочих книг
- •51 Работа с com сервером Excel. Вывод информации в ячейки Excel
- •52 Работа с com сервером Excel. Создание диаграмм
- •53 Работа с com сервером Word. Создание и сохранение документов
- •54 Работа с com сервером Word. Вывод текстовой информации
- •55 Работа с com сервером Word. Работа с таблицами
50. Работа с com сервером Excel. Запуск и закрытие Excel из приложения на c#. Создание рабочих книг
Выберем способ "раннего связывания" для сервера автоматизации Excel. При написании кода используются .Net сборки взаимодействия с приложениями Microsoft Office. при использовании импортирования библиотеки типов Com объекта и добавлении ссылки на него в Solutation Explorer (References, вкладка Com), нам сразу становится доступно пространство имен объекта (в данном случае Excel). При использовании .Net сборок взаимодействия с приложениями Microsoft Office нам, после добавления ссылки на Microsoft.Office.Interop.Excel (References, вкладка .Net), потребуется введение алиаса пространства имен Excel:
using excel = Microsoft.Office.Interop.Excel;
Запуск и закрытие Excel из приложения на C#
Все объекты имеют иерархическую структуру. Сам сервер - объект Application или приложение Excel, может содержать одну или более книг, ссылки на которые содержит свойство Workbooks. Книги - объекты Workbook, могут содержать одну или более страниц, ссылки на которые содержит свойство Worksheets или (и) диаграмм - свойство Charts. Страницы - Worksheet, содержать объекты ячейки или группы ячеек, ссылки на которые становятся доступными через объект Range. Ниже в иерархии: строки, столбцы... Аналогично и для объекта Chart серии линий, легенды...
Обратим внимание на то, что, интерфейс C# вместо понятия ячейки использует объекты Range (выбранная ячейка или группа ячеек). Отметим также группу объектов ActiveCell, ActiveChart и ActiveSheet (просто облегчают получение ссылки).
excel = new Excel.Application();//запуск
excel.Visible = true;//открытие
excel.SheetsInNewWorkbook = 3; // количество страниц
excel.Workbooks.Add(Type.Missing);//новая рабочая книга
excel.Workbooks.Close();//закрытие
Type.Missing - отсутствие значения.
51 Работа с com сервером Excel. Вывод информации в ячейки Excel
Вывод информации может быть выполнен на конкретный лист рабочей книги Excel в конкретную ячейку, поэтому нам необходимо определить объекты лист, в коллекции листов и ячейку.
excel = new Excel.Application(); excel.Visible = true; excel.SheetsInNewWorkbook = 3; excel.Workbooks.Add(Type.Missing);
var book = excel.Workbooks [1]; // первая открытая книга excel
var sheets = excel.Worksheets; // все листы
var worksheet = (Excel.Worksheet)sheets.get_Item(1); //выбираем 1й лист
var excelcell = worksheet.Cells; // ячейки
excelcell = worksheet.get_Range("A1", "E7"); //выделили диапазон
worksheet.get_Range("A1", Type.Missing).Value2 = "№"; // на рабочем листе (первом) в ячейку А1 присвоили значение
52 Работа с com сервером Excel. Создание диаграмм
excel = new Excel.Application(); excel.Visible = true; excel.SheetsInNewWorkbook = 3; excel.Workbooks.Add(Type.Missing);
var book = excel.Workbooks [1]; // первая открытая книга excel
var sheets = excel.Worksheets; // все листы
var worksheet = (Excel.Worksheet)sheets.get_Item(1); //выбираем 1й лист
var excelcell = worksheet.Cells; // ячейки
Chart graph = (Excel.Chart) excel.Charts.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing); // объект диаграммы
graph.SetSourceData(worksheet.get_Range("E2", "E6"), XlRowCol.xlColumns); // диапазон значений
graph.ChartType = XlChartType.xlColumnClustered; //тип
graph.HasLegend = false; //наличие легенды
graph.HasTitle = true; //наличие название
graph.ChartTitle.Caption = "Учет затрат на техобслуживание и текущий ремонт автомобилей";//название
Axis hAxis = (Excel.Axis) graph.Axes(XlAxisType.xlCategory, XlAxisGroup.xlPrimary); //горизонтальная ось
hAxis.HasTitle = true; // подпись оси
hAxis.AxisTitle.Text = "Марка";
Axis vAxis = (Excel.Axis) graph.Axes(XlAxisType.xlValue, XlAxisGroup.xlPrimary); //вертикальная ось
vAxis.HasTitle = true;
vAxis.AxisTitle.Text = "Количество";
