![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#16
|
||||
|
||||
|
Может так лучше будет, пока в Excel все не выгрузится,он не покажется, и будет тебе форма с прогресс баром.
Код:
procedure TForm5.SpeedButton3Click(Sender: TObject);
var
ExcelApp : variant;
row :integer;
col:integer;
begin
form10.ShowModal;
dbgrid1.DataSource.DataSet.First;
ExcelApp:=CreateOleObject('Excel.Application');
ExcelApp.workbooks.open(ExtractFilePath(ParamStr(0))+'OtchetPokyp.xls');
ExcelApp.Visible := False;
ExcelApp.WorkBooks[1].WorkSheets[1].Name := 'Отчет1';
ProgressBar1.Max := DBGrid1.DataSource.DataSet.RecordCount-1;
ProgressBar1.Position := 0;
ProgressBar1.Step := 1;
for row :=0 to DBGrid1.DataSource.DataSet.RecordCount-1 do
begin
for col :=0 to DBGrid1.Columns.Count-1 do
begin
ExcelApp.WorkBooks[1].WorkSheets[1].cells[row+7,col+2].value:=dbgrid1.DataSource.DataSet.Fields[col].AsString;
ExcelApp.WorkBooks[1].WorkSheets[1].cells[row+7,1]:=row+1;
end;
ProgressBar1.StepIt;
Application.ProcessMessages;
DBGrid1.DataSource.DataSet.Next;
ExcelApp.Range[excelapp.cells[7,1],excelapp.cells[7+DBGrid1.DataSource.DataSet.RecordCount-1,9]].select;
ExcelApp.Selection.Borders.LineStyle:= xlContinuous;
end;
ExcelApp.WorkBooks[1].WorkSheets[1].cells[row+8,col-6].value:='м.п.';
ExcelApp.WorkBooks[1].WorkSheets[1].cells[row+8,col].value:='Подпись';
ExcelApp.WorkBooks[1].WorkSheets[1].cells[row+8,col+1].value:='_________'
ExcelApp.Visible := True;
end; |
|
#17
|
||||
|
||||
|
А что вас не устраивает в наших вариантах? Вроде должен бежать прогрессбар пока вы выводите в эксель. Разве не так происходит?
|
|
#18
|
|||
|
|||
|
Всем спасибо. Вариант splinx работает как надо.
|
|
#19
|
|||
|
|||
|
начала сделай TQuery(dbgrid1.DataSource.DataSet).FetchAll
а потом ProgressBar1.Max := DBGrid1.DataSource.DataSet.RecordCount * DBGrid1.Columns.Count и место for row :=0 to DBGrid1.DataSource.DataSet.RecordCount-1 do напиши while not DBGrid1.DataSource.DataSet.Eof do и ProgressBar1.StepIt; постав внутри for col :=0 to DBGrid1.Columns.Count-1 do begin ... ... ... ProgressBar1.StepIt; end должен получатся |
|
#20
|
|||
|
|||
|
Еще люди подскажите. Как можно сделать, чтобы первые два поля не экспортировались в excel, а экспорт шел с 3 поля.
|
|
#21
|
||||
|
||||
|
Цитата:
Склоняюсь к первому варианту: Код:
... for row :=3 to DBGrid1.DataSource.DataSet.RecordCount-1 do begin ... |