Delphide Excell Aktarımı
Benim sık sık kullandığım bir işlem. Database de istediğiniz kayıtları dbgrid nesnesine getirdiniz. Ama bunların üzerinde işlem yapmak istiyorsunuz. Akla gelen ilk fikir olan excell`e atmak. Bunu için kısa bir procedure...
procedure DBGridToExcell(DBG:TDBGrid; FileName:String);
var
EXCEL, WORKBOOK, SHEET:VARIANT;
DBGDataset: TDataSet;
k1,k2,k3:Integer;
begin
DBGDataset:=DBG.DataSource.DataSet;
k3:=DBGDataset.RecNo;
DBGDataset.DisableControls;
EXCEL := CREATEOLEOBJECT(`EXCEL.APPLICATION`);
EXCEL.VISIBLE :=False;
WORKBOOK :=EXCEL.WORKBOOKS.ADD;
SHEET:=WORKBOOK.WORKSHEETS[1];
try
For k1:=0 to DBG.Columns.Count-1 do
begin
SHEET.CELLS[1,k1+1]:=DBG.Columns[k1].Field.DisplayName;
SHEET.Columns[k1+1].ColumnWidth:=(0.139*DBG.Columns[k1].Width);
end;
DBGDataset.First; k2:=1;
While not(DBGDataset.Eof) do
begin
k2:=k2+1;
For k1:=0 to DBG.Columns.Count-1 do
begin
SHEET.CELLS[k2,k1+1]:=DBG.Columns[k1].Field.AsString;
end;
DBGDataset.Next;
end;
WORKBOOK.SaveAs(FileName);
ShowMessage(`Excell Formatında Kayıt Tamamlandı`);
finally
EXCEL.DisplayAlerts := False;
EXCEL.Quit;
EXCEL:=Unassigned;
DBGDataset.RecNo:=k3;
DBGDataset.EnableControls;
end;
end;
Kullanımı:
DBGridToExcell(dbgrid1,`c:\esinti.xls`);
Ben bu işlemi savedialog compenantı kullanarak yapmayı tercih ediyorum. Kullanıcıya dosya adresi ve ismi seçme şansı veriyorsunuz.