![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Здравствуйте. Имеется такая задача - из нескольких десятков файлов excel поиском по ячейкам найти файлы, содержащие определенную фамилию, и строку,содержащую эту фамилию вывести в отдельный файл, тоже excel. Как искать в текущем документе, я нашел, в новый файл тоже думаю выведу результаты поиска, а вот как по очереди их открывать - не знаю...
Код:
procedure TForm4.Button1Click(Sender: TObject);
var
exApp, exBook, exSheet, exRng, exCell : Variant;
Od : TOpenDialog;
begin
Od := OpenDialog1;
if not Od.Execute then Exit;
try
exApp := CreateOleObject('Excel.Application');
exApp.Visible := True;
exBook := exApp.WorkBooks.Open(FileName:=Od.FileName);
//Первый лист в рабочей книге.
exSheet := exBook.WorkSheets[1];
//Используемый на листе диапазон.
exRng := exSheet.UsedRange;
//Поиск ячейки.
exCell := Unassigned;
exCell := exRng.Find(What:='Мукина');
if TVarData(exCell).VDispatch = nil then
ShowMessage('Соответствие не найдено.')
else
ShowMessage(
'Соответствие найдено: Cell['
+ IntToStr(exCell.Row) + ';' + IntToStr(exCell.Column) + ']'
)
;
//exApp.Quit;
finally
//Отключаемся от объектов OLE-автоматизации.
exApp := Unassigned;
exBook := Unassigned;
exSheet := Unassigned;
exRng := Unassigned;
exCell := Unassigned;
end;
end; |
|
#2
|
||||
|
||||
|
Для начала юзаем такую функцию:
Код:
function FindFile(Dir,mask: string):Tstringlist;
var
SR: TSearchRec;
FindRes: Integer;
begin
result:=TStringList.Create;
FindRes := FindFirst(Dir + mask, faAnyFile, SR);
while FindRes = 0 do
begin
if ((SR.Attr and faDirectory) = faDirectory) and
((SR.Name = '.') or (SR.Name = '..')) then
begin
FindRes := FindNext(SR);
Continue;
end;
Result.Add(Dir+SR.Name);
FindRes := FindNext(SR);
end;
FindClose(SR);
end;А затем как-то так: Код:
procedure TForm1.Button1Click(Sender: TObject);
var ExFiles:TStringList;
I: Integer;
exApp, exBook, exSheet, exRng, exCell : Variant;
begin
ExFiles:=TStringList.Create;
ExFiles:=FindFile('C:\temp\','*.xls');
for I := 0 to ExFiles.Count - 1 do
begin
try
exApp := CreateOleObject('Excel.Application');
exApp.Visible := True;
exBook := exApp.WorkBooks.Open(ExFiles[i]);
//Первый лист в рабочей книге.
exSheet := exBook.WorkSheets[1];
//Используемый на листе диапазон.
exRng := exSheet.UsedRange;
//Поиск ячейки.
exCell := Unassigned;
exCell := exRng.Find(What:='Мукина');
if TVarData(exCell).VDispatch = nil then
ShowMessage('Соответствие не найдено.')
else
ShowMessage(
'Соответствие найдено: Cell['
+ IntToStr(exCell.Row) + ';' + IntToStr(exCell.Column) + ']'
)
;
//exApp.Quit;
finally
//Отключаемся от объектов OLE-автоматизации.
exApp := Unassigned;
exBook := Unassigned;
exSheet := Unassigned;
exRng := Unassigned;
exCell := Unassigned;
end;
end;
end;
|