Работа с OLE-сервером ExcelСобственные проработки. ВведениеНаиболее используемыми в Windows для большинства пользователей являются MS Word и MS Excel. Естественно, результаты решения прикладных задач для них желательны в виде документов знакомых приложений. Создание таких прикладных программ, где итоговый документ формируется не только в формате, но и с использованием возможностей MS Word или MS Excel, получило название разработки контроллеров автоматизации или управления серверами автоматизации. Здесь прикладная программа рассматривается как контроллер, а Word и Excel - как сервер. Столкнувшись с продобной задачей в среде Borland C++ Builder сразу становится ясно, что литература по данному вопросу и есть и нет. Есть, потому, что ее можно найти, а нет, потому, что иммеющиеся источники содержат только основы, позволяющие приступить к выполднению задачи. В лучшем случае, описывается как запустить сервер автоматизации, провести вывод текста или некоторого элементарного графического материала. В книге "Borland C++ Builder 5. Энциклопедия программиста" Чарльза Калверта и Кента Рейсдорфа всего одна глава посвящена данным вопросам. Стартовые моменты можно найти у Алесандра Тарадым, а некоторые основы по работе с диаграммами у Наталии Елмановой. В РуНете многократно повтороен класс, разработанный Д. Арсентьевым и являющийся на сегодня одним из немногих непосредственно применимых на практике кодов, который позволяет создать простой отчет в виде документа .xls. Однако контроллеры автоматизации могут гораздо больше вывода текстовых данных и элементарной графики. Считая, что имеющегося явно недостаточно, здесь предпринята попытка на конкретных примерах прикоснуться к богатству возможностей управления серверами автоматизации и по возможности некоторой систематизации. Контроллеры автоматизации осуществляют управление серверами автоматизации при помощи вызовов их методов и с использованием переменных типа Variant. Этот тип данных позволяет работать со всеми объектами сервера автоматизации при помощи в основном четырех вызовов:
OlePropertyGet принимает строку в качестве параметра и возвращает данные, содержащиеся в указанном свойстве объекта. OlePropertySet принимает несколько параметров, первый из которых - строка, указывающая на изменяемое свойство, а последующие параметры - данные, которые будут записаны в это свойство. OleProcedure и OleFunction выполняют указанный метод объекта. Объекты к которым обращается сервер имеют иерархическую структуру (Пример для Excel):
Соответственно, внутри свойствами объектов Word могут также быть коллекции
Paragraphs, Words, Tables.
|