|
|
Регистрация | << Правила форума >> | 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 ... Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |