| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: ActiveX/СОМ/CORBA > Таблицы Word |
| Автор: Sergeant /// 27.2.2005, 00:07 |
| Каким образом происходит добавление в документ Word таблиц ? Ну т.е. я накидал на форму WordApplication,WordFont1,WordDocument,WordParagraphFormat - добавляю тексты, форматируют, а вот как таблицу добавить - никак не могу найти. Ну и заодно - как потом в эту таблицу кидаются тексты. |
| Автор: <Spawn> 27.2.2005, 03:07 |
| Прямого способа добавления таблиц сейчас не помню, но на данный момент могу посоветовать посмотреть метод ConvertToTable обьекта Range, который трансформирует указаный текст в таблицу, используя для этого некий разделитель, который ты определяешь сам. |
| Автор: Akella 17.3.2005, 15:56 |
| не знаю, то ли этот или нет, сам смотри Пример использования Vtable интерфейса Постановка задачи: Имеется шаблон документа – shablon.DOC, подготовленный в MS Word, поля, которые должны быть заменены, помечены символом @. Необходимо прочитать данные из источника информации и заменить метки, на реальные данные, после чего распечатать полученный документ. Воспользуемся методом Vtable . Выложим на форму компоненту WordApplication, WordDocument и кнопку Button. Для события OnClick компоненты Button1 пропишем следующий код: procerdure TForm1.Button1Click(Sender: TObject); var //Объявление переменных, для передачи их в //eкачестве формальных параметров в сервер автоматизации Shablon,FileName,oldStr,newStr,replace,ext:OleVariant; begin Table1.Active:=false; Table1.Active:=true; Shablon:=ExtractFilePath(Application.EXEName)+'shablon.DOC'; FileName:=ExtractFilePath(Application.EXEName)+'report.DOC'; //Открываем шаблон документа WordApplication1.Documents.Open (Shablon,EmptyParam, EmptyParam,EmptyParam, EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam); //Связываем компоненту с существующим интерфейсом WordDocument1.ConnectKind:=ckAttachToInterface; WordDocument1.ConnectTo(WordApplication1.ActiveDocument); //Следующие переменные понадобятся нам //для выполнения методов сервера replace:=1; oldStr:='@1'; newStr:=DateTimeToStr(Now); //Находим в документе метки и производим их замены WordDocument1.Range.Find.Execute(oldStr,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam,newStr,replace); oldStr:='@2'; newStr:=WordApplication1.UserName; WordDocument1.Range.Find.Execute(oldStr,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam,newStr,replace); ……… //сохранение документа и отображение его в OLE контейнере //(предварительный просмотр) WordDocument1.SaveAs(FileName); WordDocument1.Close; OleContainer1.CreateLinkToFile(FileName,false); OleContainer1.Refresh; end; Исходный код этого примера имеется в приложении к данной статье. Обратите внимание на передачу параметров в методы. Все параметры описаны как OleVariant и передаются в методы по ссылке (такая передача параметров характерна лишь для сервера Word, Excel и OutLook, например, принимают в основном фактические параметры). Сервер автоматизации сам будет разбираться, какой тип вы фактически подставили в качестве значения переменной, поэтому необходимо при разработке приложения особое внимание уделять хинтам, и почаще заглядывать в библиотеку типов сервера, с которым вы работаете в настоящее время. К стати, после того как мы установили компоненты, библиотеки типов разместились в директории …Delphi5\Imports\. В файлах библиотек типов можно найти, например все константы, необходимые для передачи параметров в Excel и OutLook, названия их интуитивно понятны. В модуле System – Delphi 5 описана переменная EmptyParam, которую необходимо использовать для передачи “пустышек” в качестве параметров. var EmptyParam: OleVariant; { "Пустой параметр" который должен опционально использоваться в DUAL интерфейсе. } Описание методов в библиотеке типов заставляет нас очень аккуратно соблюдать порядок передачи параметром, это несколько затрудняет процесс программирования, но зато Dual интерфейс работает значительно быстрее чем передача именованных параметров при позднем связывании сервера и контроллера автоматизации. |