Вопрос № 47972: Здравствуйте!!! Я уже давно програмирую в Delphi, но так и не научился сохранять отчеты в Word. Подскажите пожалуйства как это сделать правильно. Если можно то несколько способов.
Огромное спасибо!...
Вопрос № 47.972
Здравствуйте!!! Я уже давно програмирую в Delphi, но так и не научился сохранять отчеты в Word. Подскажите пожалуйства как это сделать правильно. Если можно то несколько способов.
Отвечает: Устинов Сергей Евгеньевич
Здравствуйте, Столяренко Олег!
Вот здесь в разделе OLE Automation MSOffice - [77] есть куча статей на эту тему.
Есть несколько подходов к работе с Word. 1. Работа через COM-сервера.
На форме нужны компоненты WordApplication и WordDocument с палитры Servers.
WordApplication1.Connect // Подключение к Word
WordApplication1.AutoQuit:=false;
with WordDocument1 do
begin
Connect; //соединение с документом далее все настройки не обязательны, можно сразу писать текст в документ, но я все-таки прокоментирую настройки, чтоб Вам было меньше искать.
PageSetup.Orientation:=wdOrientPortrait; //положение страницы
PageSetup.TopMargin:=29; //поля страницы
PageSetup.LeftMargin:=29;
PageSetup.RightMargin:=29;
PageSetup.BottomMargin:=29;
PageSetup.PaperSize:=wdPaperA4; //размер бумаги
with Range do
begin
Paragraphs.Format.FirstLineIndent:=0; // отступ первой строки абзаца
Font.Size:=14; //размер шрифта всего документа
Font.Bold:=0; //не жирный
Italic:=0; //не курсив
Paragraphs.Format.Space1; //одинарный интервал
Paragraphs.Item(1).Range.Font.Size:=18; //размер шрифта первого параграфа
Paragraphs.Item(1).Range.Font.Bold:=1; //жирный
Paragraphs.Item(1).Range.Font.Italic:=1; //курсив
Paragraphs.Item(1).Format.Alignment:=wdAlignParagraphCenter; //положение на странице - по центру
Paragraphs.Item(1).Range.InsertAfter('Первая строка текста'); //вставка первой строки
Paragraphs.Item(1).Range.InsertParagraphAfter; //новый параграф
Paragraphs.Item(2).Format.Alignment:=wdAlignParagraphJustify; //растягивание по ширине
Paragraphs.Item(2).Range.Font.Size:=14; //размер шрифта
Paragraphs.Item(2).Range.Font.Bold:=0;
Paragraphs.Item(2).Range.Font.Italic:=0;
Paragraphs.Item(2).Range.InsertAfter('вторая строка');
Paragraphs.Item(2).Range.InsertParagraphAfter;
Paragraphs.Item(3).Range.InsertBreak(7); //разрыв страницы новая страница - с цифрой 7 поэкспериментируйте - разные цифры - разные разрывы
end;
Disconnect; //отключаемся от документа
end;
WordApplication1.Visible:=True; //отображаем Word
WordApplication1.Disconnect; //отключаемся от Word
2. Работа через OLE
К сожалению, под рукой сейчас нет примера, на котором можно было бы понятно это объяснить, но по ссылке выше Вы найдете много статей на эту тему, а учиться никогда не поздно :)
Удачи!
--------- Ответы на все вопросы - на сайте www.ya.ru ☺
Ответ отправил: Устинов Сергей Евгеньевич (статус: Студент)
Ответ отправлен: 03.07.2006, 11:17 Оценка за ответ: 5 Комментарий оценки: огромное спасибо