====== OLE-сервер (MS Excel/Word) ====== ===== Работа с OLE-сервером ===== В роли сервера выступает установленное приложение MS Excel или Word.\\ Для работы необходимо подключить заголовки: **** и ****.\\ Взаимодействие происходит с помощью методов сервера: * **OlePropertyGet** - принимает строку в качестве параметра и возвращает данные, содержащиеся в указанном свойстве объекта * **OlePropertySet ** - принимает несколько параметров, первый из которых - строка, указывающая на изменяемое свойство, а последующие параметры - данные, которые будут записаны в это свойство * **OleProcedure и OleFunction** - выполняют указанный метод объекта Объекты сервера имеют вложенную, иерархическую структуру, например excel содержит: само приложение (Excel.Application), далее набор книг (Workbooks), далее набор страниц (WorkSheets), далее набор ячеек (Cells).\\ ===== Работа с Excel ===== **Создаем документ**, задаем начальные параметры (..) // Переменные объявлены глобально Variant VApp, VSetBooks, VBook, VSetSheets, VSheet, VSetCells, VCell; (..) // Создаем объект приложения Excel VApp= CreateOleObject("Excel.Application"); VApp.OlePropertySet("Visible", true); // Создаем объект- набор рабочих книг VSetBooks= VApp.OlePropertyGet("Workbooks"); // Задаем кол-во листов в создаваемой книге VApp.OlePropertySet("SheetsInNewWorkbook", 1); VSetBooks.OleProcedure("Add"); // Создаем книгу // Ссылка на текущую книгу (у нас одна) VBook= VSetBooks.OlePropertyGet("Item", 1); // Создаем объект- набор страниц, выбранной книги VSetSheets= VBook.OlePropertyGet("Worksheets"); // Выбираем первую страницу VSheet= VSetSheets.OlePropertyGet("Item", 1); // Задаем свойства странице VSheet.OlePropertySet("Name", WideString("Первый лист")); Далее **заполняем данными** // Выбираем группу ячеек, для массовой установки общих свойств VCell= VSheet.OlePropertyGet("Range", WideString("A1:C5")); // Настройка шрифта VCell.OlePropertyGet("Font").OlePropertySet("Name", WideString("Arial")); VCell.OlePropertyGet("Font").OlePropertySet("Size", 16); VCell.OlePropertyGet("Font").OlePropertySet("Color", clBlue); //VCell.OlePropertySet("RowHeight", 15); VCell.OlePropertySet("ColumnWidth", 25); // Вносим значения VSetCells= VSheet.OlePropertyGet("Cells"); VSetCells.OlePropertyGet("Item", 1, 2).OlePropertySet("Value", WideString("1я строка, 2ой столбец")); ==== Еще примеры ==== Выравнивание по центру (-4108 константа, означает центр) VCell.OlePropertySet("HorizontalAlignment", -4108); VCell.OlePropertySet("VerticalAlignment", -4108); Выбор одной ячейки VCell= VSheet.OlePropertyGet("Cells").OlePropertyGet("Item", 1, 1); При выборе группы ячеек, их можно объединить VCell= VSheet.OlePropertyGet("Range", WideString("A1:C5")); VCell.OleProcedure("Merge"); Стили шрифта в ячейке //Жирный VCell.OlePropertyGet("Font").OlePropertySet("Bold",true); //Курсив VCell.OlePropertyGet("Font").OlePropertySet("Italic",true); //Зачеркнутый VCell.OlePropertyGet("Font").OlePropertySet("Strikethrough",true); //Верхний индекс VCell.OlePropertyGet("Font").OlePropertySet("Superscript",true); //Нижний индекс VCell.OlePropertyGet("Font").OlePropertySet("Subscript",true); //Без линий VCell.OlePropertyGet("Font").OlePropertySet("OutlineFont",true); //C тенью VCell.OlePropertyGet("Font").OlePropertySet("Shadow",true); //Подчеркнутое одинарной линией по значению VCell.OlePropertyGet("Font").OlePropertySet("Underline",2); //Подчеркнутое двойной линией по значению VCell.OlePropertyGet("Font").OlePropertySet("Underline",-4119); //Подчеркнутое одинарной линией по ячейке VCell.OlePropertyGet("Font").OlePropertySet("Underline",4); //Подчеркнутое двойной линией по значению VCell.OlePropertyGet("Font").OlePropertySet("Underline",5); Заливка ячейки VCell.OlePropertyGet("Interior").OlePropertySet("ColorIndex",35); Установить рамку вокруг выбранных ячеек проведением линий с выбранной стороны (Borders) с указанием стиля линии (LineStyle) толщины (Weight) и цвета линии(ColorIndex). VCell.OlePropertyGet("Borders",10).OlePropertySet("LineStyle",1); VCell.OlePropertyGet("Borders",10).OlePropertySet("Weight",4); VCell.OlePropertyGet("Borders",10).OlePropertySet("ColorIndex",46); Работа со страницами // Добавить страницу (добавляется в начало) VSetSheets.OleProcedure("Add"); // Активация второй страницы OleVariant vSecondSheet= VSetSheets.OlePropertyGet("Item",2); vSecondSheet.OleProcedure("Activate"); OleVariant vBefore= EmptyParam, vAfter= vVarSheets.OlePropertyGet("Item",2); // Меняем местами VSheet.OleProcedure("Move", vBefore, vAfter); // Или копируем VSheet.OleProcedure("Copy", vBefore, vAfter); // Или лист копируем или переносим в новую книгу VSheet.OleProcedure("Copy"); VSheet.OleProcedure("Move"); ===== ===== ==== ==== ==== ====