|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
progressbar и экспорт в excel
Значит как сделать чтобы во время экспорта в excel, чтобы пользователь не видел как формируется страничка. Красовалась форма с progressbar и шла загрузка. Может кто сталкивался с подобным подскажите или еще скиньте исходник если есть. плиз.
|
#2
|
|||
|
|||
Создаешь форму с прогресс-баром, делаешь ей стиль, fsStayOnTop, показываешь ее через Show и начинаешь выполнять экспорт. По тому, как у тебя идут операции экспорта, обновляешь прогресс-бар и вызываешь у это формы метод Update (или Redraw, если больше нравится). Все.
|
#3
|
|||
|
|||
а компонет таймер нужен. вообще только одна процедура нужна???
|
#4
|
||||
|
||||
Смотря как у тебя данные выгружаются в Excel, если в цикле перебираешь строки в таблице, то тут и думать не надо, просто progressbar.Position:=progressbar.Position+1 (если слишком быстро все происходит, можно после этой строчки добавить Application.ProcessMessages).А если через компонент какойнить,то тут отдельно нужно рассматривать компонент |
#5
|
|||
|
|||
Цитата:
Вот мой код экспорта Код:
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 := true; ExcelApp.WorkBooks[1].WorkSheets[1].Name := 'Отчет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; 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:='_________' end; |
#6
|
|||
|
|||
Цитата:
Вот мой код экспорта Код:
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 := true; ExcelApp.WorkBooks[1].WorkSheets[1].Name := 'Отчет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; 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:='_________' end; |
#7
|
||||
|
||||
Код:
procedure TForm5.SpeedButton3Click(Sender: TObject); var ExcelApp : variant; row :integer; col:integer; begin PRogressbar.position:=0; Progressbar.min:=0; Progressbar.max:=DBGrid1.DataSource.DataSet.RecordCount-1; Progressbar.step:=1; form10.ShowModal; dbgrid1.DataSource.DataSet.First; ExcelApp:=CreateOleObject('Excel.Application'); ExcelApp.workbooks.open(ExtractFilePath(ParamStr(0))+'OtchetPokyp.xls'); ExcelApp.Visible := true; ExcelApp.WorkBooks[1].WorkSheets[1].Name := 'Отчет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; PRogressbar.position:=PRogressbar.position+1; 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:='_________' end; |
#8
|
||||
|
||||
Предполагается что у вас на форме есть ProgressBar1.
Код:
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 := true; 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:='_________' end; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#9
|
|||
|
|||
может у кого исходник есть а то самому разбираться времени нет. а очень нужно срочно
|
#10
|
|||
|
|||
Цитата:
|