Delphide Excell Aktarımı

Programlama12/02/2008


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ıya dosya adresi ve ismi seçme şansı veriyorsunuz.


Etiketler: