Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VSRPP.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
181.63 Кб
Скачать

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 (выбранная ячейка или группа ячеек). Отметим также группу объектов ActiveCellActiveChart и 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 = "Количество";

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]