Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Автоматизация Word с OLE

Delphi , Технологии , OLE Automation MSOffice

Автоматизация Word с OLE

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

uses
   comobj;

 procedure TForm1.Button1Click(Sender: TObject);
 var
   Word: OLEVariant;
 begin
   try
     Word := CreateOleObject('Word.Application');
   except
     ShowMessage('Cannot start Word !');
     Exit;
   end;
   // Show Word 
  Word.Visible := True;
   // Add a new Document 
  Word.Documents.Add;
   if Word.ActiveWindow.View.SplitSpecial <> 0 then
     Word.ActiveWindow.Panes[2].Close;
   if (Word.ActiveWindow.ActivePane.View.type = 1) or
     (Word.ActiveWindow.ActivePane.View.type = 2) or
     (Word.ActiveWindow.ActivePane.View.type = 5) then
     Word.ActiveWindow.ActivePane.View.type := 3;
   Word.ActiveWindow.ActivePane.View.SeekView := 9;

   Word.Selection.Font.Name     := 'Times New Roman';
   Word.Selection.Font.Size     := 12;
   Word.Selection.Font.Bold     := True;
   Word.Selection.ParagraphFormat.Alignment := 1;
   Word.Selection.TypeText(Text :=
     'Kohlenhandel Brikett-GmbH & Co.-KG. - Holzweg 16 - 54633 Steinhausen');

   if Word.Selection.HeaderFooter.IsHeader = True then
     Word.ActiveWindow.ActivePane.View.SeekView := 10
   else
     Word.ActiveWindow.ActivePane.View.SeekView := 9;
   Word.Selection.TypeText(Text :=
     'Bankverbindung: Stadtsparkasse Steinhausen BLZ 123456789   KtoNr. 782972393243');
   Word.ActiveWindow.ActivePane.View.SeekView := 0;
   Word.Selection.TypeText(Text := Edit2.Text + ' ' + edit1.Text);
   Word.Selection.TypeParagraph;
   Word.Selection.TypeText(Text := edit3.Text);
   Word.Selection.TypeParagraph;
   Word.Selection.TypeParagraph;
   Word.Selection.Font.Name := 'Times New Roman';
   Word.Selection.Font.Size := 12;
   Word.Selection.Font.Bold := True;

   Word.Selection.TypeText(Text := edit4.Text + ' ' + edit5.Text);
   Word.Selection.TypeParagraph;
   Word.Selection.TypeParagraph;
   Word.Selection.TypeParagraph;
   Word.Selection.TypeParagraph;
   Word.Selection.Font.Name     := 'Arial';
   Word.Selection.Font.Size     := 14;
   Word.Selection.Font.Bold     := True;
   Word.Selection.TypeText(Text := Combobox1.Text);
   Word.Selection.TypeParagraph;
   Word.Selection.TypeParagraph;
   Word.Selection.TypeParagraph;
   Word.Selection.Font.Name := 'Times New Roman';
   Word.Selection.Font.Size := 12;
   Word.Selection.Font.Bold := True;
   if radiogroup1.ItemIndex = 0 then
     Word.Selection.TypeText(Text := 'Sehr geehrter Herr ' + edit1.Text)
   else
     Word.Selection.TypeText(Text := 'Sehr geehrte Frau ' + edit1.Text);
 end;

Пример автоматизации Microsoft Word с помощью OLE (Object Linking and Embedding) в Delphi. Код создает новый экземпляр приложения Word, добавляет новый документ и выполняет различные действия, такие как настройка свойств шрифта, вставка текста и форматирование абзацев.

Вот разбивка того, что код делает:

  1. Создает экземпляр приложения Word с помощью CreateOleObject('Word.Application').
  2. Устанавливает видимость приложения Word в true с помощью Word.Visible := True.
  3. Добавляет новый документ с помощью Word.Documents.Add.
  4. Форматирует абзацы и свойства шрифта, такие как настройка имени шрифта, размера и жирности.
  5. Вставляет текст в документ с помощью Word.Selection.TypeText.
  6. Устанавливает различные режимы просмотра для приложения Word, такие как поиск конкретного режима просмотра с помощью Word.ActiveWindow.ActivePane.View.SeekView.
  7. Форматирует абзацы, вставляя переносы строк с помощью Word.Selection.TypeParagraph.
  8. Вставляет текст с различными свойствами шрифта и форматированием.
  9. Использует различные условные операторы для определения текста, который нужно вставить, на основе ввода пользователя.

Некоторые наблюдения:

  • Код довольно длинный и может быть рефакторизован для лучшей читаемости и поддержки.
  • Есть несколько повторяющихся блоков кода, которые могут быть извлечены в отдельные процедуры или функции.
  • Использование OLE может быть неудобным, особенно при работе с сложными документами. Рекомендуется использовать более современные API, такие как COM или Interop.

Некоторые предложения:

  • Рассмотрите разделение кода на меньшие процедуры или функции для улучшения читаемости и поддержки.
  • Используйте константы для повторяющихся значений, таких как размеры шрифта и имена.
  • Рассмотрите использование более современной API для взаимодействия с Word, такой как COM или Interop.
  • Добавьте обработку ошибок для случаев, когда Word не установлен или не может быть запущен.

В качестве альтернативных решений можно рассмотреть:

  1. Использование встроенного поддержки Delphi для автоматизации Office-приложений с помощью COM-автоматизации.
  2. Использование третьей-сторонней библиотеки, которая предоставляет более простой интерфейс для автоматизации Office-приложений.
  3. Написание.custom solution с использованием другого языка программирования и API для взаимодействия с Word.

В целом, код довольно сложный и может быть улучшен рефакторингом и оптимизацией.

Автоматизация Microsoft Word с использованием OLE (Object Linking and Embedding) позволяет создавать сложные приложения, взаимодействующие с документами Word.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: OLE Automation MSOffice ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-29 01:28:05/0.0034599304199219/0