На этом шаге мы рассмотрим способы чтения из документа.
Рассмотрим чтение текста из открытого документа Word. Создадим новую кнопку и в процедуре обработки
ее нажатия напишем следующий код.
procedure TForm1.Button2Click(Sender: TObject); //Чтение документа begin Memo1.Text:=W.ActiveDocument.Range.Text; end;
На рисунке 1 представлен результат работы этого кода.
Рис.1. Чтение текста из документа
Полный текст приложения:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComObj, StdCtrls; type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; Button2: TButton; OpenDialog1: TOpenDialog; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; W:Variant; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); //Открытие документа Word begin W:=CreateOleObject('Word.Application'); if OpenDialog1.Execute then Begin W.Documents.Open(OpenDialog1.FileName); W.Visible:=True; End; end; procedure TForm1.Button2Click(Sender: TObject); //Чтение документа begin Memo1.Text:=W.ActiveDocument.Range.Text; end; end.
Текст этого приложения можно взять здесь (5,4 Кб).
Если требуется экспортировать в программу-контроллер очень большой текст, то можно работать с его фрагментами в
документе. Для этого используйте процедуру Range(first, last), где first, last - границы диапазона
(позиции символов), в котором находится рабочий фрагмент.
Другой способ чтения текста документа основан на чтении слов.
Примечание.
За слово принимается непрерывный фрагмент текста, состоящий из букв и цифр, который оканчивается пробелом,
знаком препинания, арифметическим, логическим или другим символом. Все перечисленные символы или их
комбинации за исключением пробела также представляют собой отдельные слова.
Рассмотрим коллекцию Words слов документа. Синтаксис может быть таким:
W.ActiveDocument.Words
Эта коллекция включает в себя слова объекта-хозяина. В следующем примере коллекция Words содержит все слова активного документа.
procedure TForm1.Button2Click(Sender: TObject); //Чтение слов документа var i:Integer; begin Memo1.Lines.Clear; for i:=1 to W.ActiveDocument.Words.count do Memo1.Lines.Add(W.ActiveDocument.Words.item(i).Text); end;
Результат работы приложения изображен на рисунке 2:
Рис.2. Результат работы приложения
Полный текст приложения:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComObj, StdCtrls; type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; Button2: TButton; OpenDialog1: TOpenDialog; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; W:Variant; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); //Открытие документа Word begin W:=CreateOleObject('Word.Application'); if OpenDialog1.Execute then Begin W.Documents.Open(OpenDialog1.FileName); W.Visible:=True; End; end; procedure TForm1.Button2Click(Sender: TObject); //Чтение слов документа var i:Integer; begin Memo1.Lines.Clear; for i:=1 to W.ActiveDocument.Words.count do Memo1.Lines.Add(W.ActiveDocument.Words.item(i).Text); end; end.
Текст этого приложения можно взять здесь (5,6 Кб).
Очевидно, что данный способ подходит для работы с отдельными словами, но его можно использовать только для чтения, а не для записи.
Когда документ открыт, прочитан, изменен, то, возможно, потребуется сохранить эти изменения.
На следующем шаге мы рассмотрим сохранение документа.