На этом шаге мы рассмотрим организацию замены текста.
После успешного поиска текста метод Find возвращает ссылку на объект-ячейку, используя который мы можем изменить содержание ячейки. Повторяя поиск и замену многократно, можно сформировать необходимый документ, но для этого есть более эффективный способ - использование функции поиска и замены. Эта функция в Excel реализуется методом Replace, который имеет два обязательных аргумента - искомый текст и текст для замены. В качестве примера использования этого метода рассмотрим следующую процедуру.
procedure TForm1.Button4Click(Sender: TObject); //Поиск и замена текста var S,U:string; FindRange:variant; begin S:=InputBox ('Поиск текста!','',''); U:=InputBox ('Замена на текст!','',''); if S<>'' then begin try FindRange:=E.Cells.Replace(What:=S,Replacement:=U); except MessageBox(0,'Искомый текст не найден!','Внимание!',0); end; end; end;
В результате выполнения этой процедуры будет заменен текст, если условия поиска выполнены. Иначе будет сгенерирована исключительная ситуация, обработав которую мы выведем сообщение об ошибке и невозможности замены текста.
Результат работы процедуры изображен на рисунках 1 и 2.
Рис.1. Книга до замены
Рис.2. Книга после замены
Полная спецификация метода Replace:
Replace(What, Replacement, LookAt, SearchOrder, MatchCase, MatchByte);
Аргументы метода Replace приведены в таблице 1.
Аргумент | Тип | Значение |
---|---|---|
What | String | Строка поиска |
Replacement | String | Строка замены |
LookAt | Integer | Поиск совпадения строки текста целиком или ее части. Возможные значения:
|
SearchOrder | Integer | Порядок поиска (перебираем строки или столбцы). Возможные значения:
|
MatchCase | Boolean | Учет регистра букв при поиске (True - учитывать регистр, по умолчанию - False) |
MatchByte | Boolean | Предназначен для двухбайтовых символов (в версиях для Windows не используется) |
Приведем полный текст приложения.
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComObj; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation var E:variant; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); //Создание объекта Excel и отображение окна begin E:=CreateOleObject('Excel.Application'); E.Visible:=True; end; procedure TForm1.Button2Click(Sender: TObject); //Создание рабочей книги begin E.WorkBooks.Add; end; procedure TForm1.Button3Click(Sender: TObject); //Заполним 1-ю строку и 3-й столбец begin E.ActiveSheet.Rows[1].Value:='123'; E.ActiveSheet.Columns[3].Value:='123'; end; procedure TForm1.Button4Click(Sender: TObject); //Поиск и замена текста var S,U:string; FindRange:variant; begin S:=InputBox ('Поиск текста!','',''); U:=InputBox ('Замена на текст!','',''); if S<>'' then begin try FindRange:=E.Cells.Replace(What:=S,Replacement:=U); except MessageBox(0,'Искомый текст не найден!','Внимание!',0); end; end; end; end.
На следующем шаге мы рассмотрим определение и изменение размеров ячейки.