МС оффис + делфи(?)

Vadim69

подскажите плз, чем можно выполнить такую задачу: есть много данных стандартного характера в экселе. есть некая форма в ворде для печати на неких стандартных бланках. надо данные из экселя автоматизировано кидать в эту форму и выводить на печать. грубо говоря, по нажатию кнопки должно распечататься, скажем, 50 заполненных данными из экселя форм. или как-то рассказать экселю про форматирование при печати, чтоб попасть ровно в стандартный бланк. собственно вопрос - есть ли компонент, позволяющий это сделать? или это можно сделать на VB?

Dasar

я бы делал через docx
Сохраняешь форму, как docx, парсишь xml, находишь свои поля - заполняешь, и отправляешь на печать.
остальные способы, имхо, более геморройные и тормозные

Vadim69

хорошая идея, но не вариант. на всем парке машин стоит MSO 2k3(лицензия и менять его на что-то другое никто не собирается. или.. я правильно понимаю, что работа с docx невозможна без MSO 2k7?

Dasar

в 2003 уже есть docx как wordml (файл как простой xml-ник)
в 2007-ой docx уже идет как OOXML (файл - как zip-ник, в котором куча xml-ников)
ps
в 2003 можно работать и с OOXML, если поставить патч

Vadim69

сенкс. так и сделаю.
патч там официальный, я так понимаю? т.е. нарушения лицензии не будет?

0000

А при чем тут Дельфи?
VB, VBA, WSH (VB Script) как раз для такой автоматизации и сделаны.

Vadim69

там большая такая прога на дельфи написана. я и подумал, что мб есть какой-то компонент подходящий.

Dasar

патч там официальный, я так понимаю? т.е. нарушения лицензии не будет?
да, официальный.
ps
только он может называется tools какие-нибудь, а не patch.

peter1dav

Вдогонку, при работе через VBA следует учитывать, если идет программное форматирование каких-либо данных, типа "Выразить дату как 01.01.2008", то привязка идет к региональным настройкам винды. Т.е. если в хелпе может быть написано, что для даты надо использовать форматную строку типа "DD.MM.YYYY", а винда "русская", то скорее всего придется использовать "ДД.ММ.ГГГГ", потому что в противном случае все рухнет по ошибке.

Vadim69

ага, спасибо, уже нашел. буду разбираться.

Vadim69

вот блин
я как-то раз до этого интуитивным путем дошел через попытки самоубийства об стену=(

yolki

Я бы советовал сделать так:
в формах сделать именованные поля и их заполнять через Document.FormFields

Dimon89

У мну есть готовая тулза на дельфях, которая делает именно то, что нужно. Правда, данные берутся не из экселя, а из компонента на форме. И написано всё в лоб - перейти на такой-то символ, записать там то-то. Про именованные поля не догадался.

Vadim69

сенкс :D

Vadim69

я как раз и хотел этого избежать.
Оставить комментарий
Имя или ник:
Комментарий: