delphi DbGrid转Excel和DataSet转Excel  
官方Delphi 学习QQ群: 682628230(三千人)
频道

delphi DbGrid转Excel和DataSet转Excel


当我不得不将DBGrid传输到Excele时,我说我应该在这里分配它。让他们使用他们需要的东西,如果有错误,或者如果您报告更简单的方法,我将很高兴。



unit DbGridToExcel;

 

interface

 

uses

  comobj, Vcl.DBGrids, Data.DB, System.SysUtils;

 

type

  TAutoFit = record

  public

    Baslangic: String;

    Bitis: String;

  end;

 

type

  TExcel = record

  private

  public

    WorkSheetsName: String;

    Folder: String;

    AutoFit: TAutoFit;

    Bold: String;

    procedure ExcExport(Grid: TDBGrid);

    procedure ExcExportDs(Data: TDataset);

  end;

 

implementation

 

procedure TExcel.ExcExport(Grid: TDBGrid);

var

  Excel, Workbook, Sheet: Variant;

  i, a: integer;

begin

  Excel := CreateOleObject('EXCEL.APPLICATION');

  Workbook := Excel.workbooks.Add;

  Sheet := Workbook.worksheets[1];

  Grid.DataSource.DataSet.First;

  for i := 1 to Grid.Columns.Count do

  begin

    Sheet.cells[1, i] := Grid.Columns[i - 1].FieldName;

  end;

  for I := 2 to Grid.DataSource.DataSet.RecordCount + 1 do

  begin

    for a := 0 to Grid.Columns.Count - 1 do

    begin

      Sheet.cells[i, a + 1] := Grid.DataSource.DataSet.Fields[a].AsString;

    end;

    Grid.DataSource.DataSet.Next;

  end;

  if (Bold <> '') then

    Excel.Range[Bold].Font.Bold := True;

  if (Trim(AutoFit.Baslangic) <> '') and (Trim(AutoFit.Bitis) <> '') then

    Excel.Range[AutoFit.Baslangic, AutoFit.Bitis].EntireColumn.AutoFit;

  if WorkSheetsName <> '' then

    Excel.workbooks[1].worksheets[1].Name := WorkSheetsName

  else

    Excel.workbooks[1].worksheets[1].Name := 'yhackup';

  if Folder <> '' then

    Excel.ActiveWorkBook.SaveAs(Folder);

  Excel.visible := True;

end;

 

procedure TExcel.ExcExportDs(Data: TDataset);

var

  Excel, Workbook, Sheet: Variant;

  i, a: integer;

begin

  Excel := CreateOleObject('EXCEL.APPLICATION');

  Workbook := Excel.workbooks.Add;

  Sheet := Workbook.worksheets[1];

  Data.First;

  for i := 1 to Data.FieldCount do

  begin

    Sheet.cells[1, i] := Data.Fields[i - 1].FieldName;

  end;

  for I := 2 to Data.RecordCount + 1 do

  begin

    for a := 0 to Data.FieldCount - 1 do

    begin

      Sheet.cells[i, a + 1] := Data.Fields[a].AsString;

    end;

    Data.Next;

  end;

 

  if (Bold <> '') then

    Excel.Range[Bold].Font.Bold := True;

  if (Trim(AutoFit.Baslangic) <> '') and (Trim(AutoFit.Bitis) <> '') then

    Excel.Range[AutoFit.Baslangic, AutoFit.Bitis].EntireColumn.AutoFit;

  if WorkSheetsName <> '' then

    Excel.workbooks[1].worksheets[1].Name := WorkSheetsName

  else

    Excel.workbooks[1].worksheets[1].Name := 'yhackup';

 

  if Folder <> '' then

    Excel.ActiveWorkBook.SaveAs(Folder);

  Excel.visible := True;

end;

 

end.




以这种方式使用;



var

ex:TExcel;

begin

 ex.WorkSheetsName := 'deneme';   // Zorunlu Değil

 ex.Folder := 'C:\Users\Yakup\Desktop\Excel-1.xls';   // Zorunlu Değil

 ex.AutoFit.Baslangic := 'A1';   // Zorunlu Değil

 ex.AutoFit.Bitis := 'Z1';   // Zorunlu Değil

 ex.Bold := 'A1:H1';   // Zorunlu Değil

 

 ex.ExcExportDs(Form9.DBGrid1.DataSource.DataSet);

 // ex.ExcExport(Form9.DBGrid1);

end;



推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.044868946075439 seconds