ProgressBar1 - это строка прогресса, в моём нижеследующем примере она "gauge" (можно её вообще выкинуть пока что). В твоём примере (ИМХО не самом наглядном) Table1 - это именно таблица, её надо подключить к таблице в базе данных (я подключаюсь через ADO). Переход на следующую строку в твоём примере - Table1.Next; (переход в таблице к следующей строке, "next"). А для перехода на следующую строку на листе ёкселя следует завести переменную (в твоём примере i1) и соответственно увеличивать её на единицу при каждом Table1.Next.
Мой пример выдран из программы, которая из DBF экспортирует в XLS с нужными мне условиями (ex - типа variant). Разбирайся...
| Код | zapros.Close; zapros.SQL.Clear; zapros.SQL.Text:=sq; zapros.Open; ex:=createoleobject('excel.application'); ex.visible:=false; ex.DisplayAlerts:=False; ex.workbooks.add; ex.activeworkbook.sheets[1].activate; try Ex.ActiveSheet.PageSetup.centerfooter:=bsSkinEdit1.Text; ex.ActiveSheet.PageSetup.Orientation := xlLandscape; ex.ActiveSheet.PageSetup.topmargin:=0; ex.ActiveSheet.PageSetup.leftmargin:=0; ex.ActiveSheet.PageSetup.rightmargin:=0; Ex.ActiveSheet.PageSetup.rightfooter:='&P'; Ex.ActiveSheet.PageSetup.PrintTitleRows := '$1:$1';
except end; ex.activeworkbook.activesheet.Rows[1].Font.Bold := True; ex.activeworkbook.activesheet.Rows[1].HorizontalAlignment := 3; for i:=0 to zapros.FieldCount-1 do begin ex.activeworkbook.activesheet.cells.item[1,i+1]:=zapros.Fields[i].FieldName; ex.activeworkbook.activesheet.Cells[1,i+1].Borders.lineStyle := 1; if (zapros.Fields[i].FieldName='recno2') or (zapros.Fields[i].FieldName='ves') then ex.activeworkbook.activesheet.cells.item[1,i+1].ColumnWidth := 5 else ex.activeworkbook.activesheet.cells.item[1,i+1].ColumnWidth := 30; end;
zapros.First; for i:=1 to zapros.RecordCount do begin gauge.Value:=i; application.ProcessMessages; ex.activeworkbook.activesheet.Rows[i].HorizontalAlignment := 3; for j:=0 to zapros.FieldCount-1 do begin ex.activeworkbook.activesheet.cells.item[i+1,j+1]:=zapros.Fields[j].AsString; ex.activeworkbook.activesheet.Cells[i+1,j+1].Borders.lineStyle := 1; ex.activeworkbook.activesheet.Cells[i+1,j+1].WrapText:=true; end; zapros.Next; end;
fn:=extractfilepath(opener.FileName)+'ves_'+trim(bsSkinEdit1.Text); Ex.ActiveWorkbook.SaveAs(fn); ex.application.quit; ex:=unassigned; bsSkinMessage1.MessageDlg ('Работа окончена!',mtinformation,[mbyes],0); gauge.Visible:=false; end;
|
|