Advertisement
Guest User

ExportXls

a guest
Aug 9th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 2.78 KB | None | 0 0
  1.  type
  2.     TGeraCsv = class( TComponent )
  3.       strict private
  4.         FDataset: TDataSet;
  5.         FCaminho    : Ansistring;
  6.         FNomeArquivo: Ansistring;
  7.         procedure setFCaminho ( const Value: Ansistring );
  8.         procedure GerarXlsx ( DataSet: TDataSet );
  9.       public
  10.         procedure Start;
  11.         property Caminho    : Ansistring read FCaminho write setFCaminho;
  12.         property NomeArquivo: Ansistring read FNomeArquivo write FNomeArquivo;
  13.         procedure AfterConstruction; override;
  14.         procedure BeforeDestruction; override;
  15.         constructor Create ( AOwner: TComponent; DataSet: TDataSet ); reintroduce; overload;
  16.         procedure NativeXls;
  17.  
  18.     end;
  19. Implementation
  20. // Implementações do objeto
  21.  
  22.   { TGeraCsv }
  23.  
  24.   procedure TGeraCsv.AfterConstruction;
  25.   begin
  26.     inherited AfterConstruction;
  27.  
  28.   end;
  29.  
  30.   procedure TGeraCsv.BeforeDestruction;
  31.   begin
  32.     inherited BeforeDestruction;
  33.  
  34.   end;
  35.  
  36.   constructor TGeraCsv.Create ( AOwner: TComponent; DataSet: TDataSet );
  37.   begin
  38.     inherited Create ( AOwner );
  39.     FDataset := DataSet;
  40.  
  41.   end;
  42.  
  43.   procedure TGeraCsv.GerarXlsx ( DataSet: TDataSet );
  44.   var
  45.     coluna, linha: Integer;
  46.     excel        : variant;
  47.     valor        : string;
  48.   begin
  49.     try
  50.       excel := CreateOleObject ( 'Excel.Application' );
  51.       excel.Workbooks.add ( 1 );
  52.     except
  53.       Application.MessageBox ( 'Versão do Ms-Excel' + 'Incompatível', 'Erro', MB_OK + MB_ICONEXCLAMATION );
  54.     end;
  55.  
  56.    Dataset.DisableControls;
  57.    Dataset.First;
  58.  
  59.     try
  60.       for linha := 0 to Dataset.RecordCount - 1 do
  61.         begin
  62.           for coluna := 1 to Dataset.FieldCount do // eliminei a coluna 0 da relação do Excel
  63.             begin
  64.               valor                            := Dataset.Fields[ coluna - 1 ].AsString;
  65.               excel.cells[ linha + 2, coluna ] := valor;
  66.             end;
  67.           Dataset.Next;
  68.         end;
  69.  
  70.       for coluna := 1 to Dataset.FieldCount do // eliminei a coluna 0 da relação do Excel
  71.         begin
  72.           valor                    := Dataset.Fields[ coluna - 1 ].DisplayLabel;
  73.           excel.cells[ 1, coluna ] := valor;
  74.         end;
  75.       // esta linha é para fazer com que o Excel dimencione as células adequadamente.
  76.       excel.columns.AutoFit;
  77.       excel.visible := true;
  78.     except
  79.       Application.MessageBox ( 'Aconteceu um erro desconhecido durante a conversão' + 'da tabela para o Ms-Excel', 'Erro', MB_OK + MB_ICONEXCLAMATION );
  80.     end;
  81.     Dataset.EnableControls;
  82.   end;
  83.  
  84. procedure TGeraCsv.NativeXls;
  85. begin
  86.  ExportDatasettoXls( FDataset,FCaminho );
  87. end;
  88.  
  89. procedure TGeraCsv.setFCaminho ( const Value: Ansistring );
  90. begin
  91.   FCaminho := Value;
  92. end;
  93.  
  94. procedure TGeraCsv.Start;
  95.  var Th: TThread;
  96. begin
  97.   GerarXlsx ( FDataset );
  98. end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement