Показать сообщение отдельно
Старый 29.03.2011, 19:20   #13  
jkspb is offline
jkspb
Участник
 
18 / 20 (1) +++
Регистрация: 03.03.2009
Для этого вам нужен шаблон в формате xml для ексель.
Создаете новый документ и сохраните его в формате "таблица xml 2003 (*.xml)".
При работе с шаблоном можно выделить 2 типа данных, требующих заполнения6 статические (дата отчета, номер документа и т.д.) и динамические (табличная часть, подписи, итоги).
Для статичных данных нам требуется сама ячейка, для динамических - формат оформления (преимущественно).
В обоих случаях используются именованные ячейки екселя (Формулы\Диспетчер имен\Присвоить имя).
Сам формат екселя предполагает только работу с базовыми возможностями екселя, т.е всякие графики, сводные таблицы формат не поддерживает. Доступ к этим возможностям осуществляется при помощи объекта COM, после того, как файл с данными.
Для работы вам нужно реализовать обертку, при помощи которой будет открываться файл, осуществляться поиск узлов, добавление новых узлов, их атрибутов и свойств.
Ну, а дальше, используя обертку, открываете файл, находите нужные "статичные именованные ячейки", заполняете значениями, используя формат элементов табличной части, создаете стоки таблицы, самостоятельно определяя по некоторому алгоритму, когда нужно вставить итоги по странице, которые вы накапливаете, вставить разрыв страницы, скопировать шапку для нового листа, сохраняете изменения в новом файле, передаете объекту СОМ екселя и отображаете, или печатаете.
Для вставки разрыва страницы, вам нужно в *.xml файлы вставить соответствующие узлы. Какой именно? Вставьте в екселе разрыв страницы, сохраните изменения и посмотрите при помощи какого-либо редактора, что изменилось.
Для работы с хмл использую семейство классов XMLElement, XMLDocument (см. форум, "гугл" - статей достаточно).
Использовать СОМ екселя для создание документа - не рекомендую, очень медленно. Можете использовать для вызова дополнительных функций (например, графиков).
Есть вариант работы с екселем через DDE.
Думаю, что проблем с прямым доступом к OpenOffice не должно быть. В любом случае всегда можно реализовать обертку через стороннее приложение, dll-ку.
За это сообщение автора поблагодарили: vr (1).