![]() |
|
|
Регистрация | << Правила форума >> | 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; Последний раз редактировалось Admin, Сегодня в 10:32. |