Esportare dati da DBGrid a Excel



Bene, una delle operazioni più utili quando si lavora con un componente DBGrid in Delphi, è poter esportare i dati, meglio ancora senza usare componenti esterni che appesantiscono. Quindi se hai bisogno di

  • copiare ed incollare il contenuto della grid in Excel, file di testo ecc…
  • oppure esportare in un file esterno e poterlo aprire con Excel o altro programma.

ti mostro in questo articolo come fare la copia o l’esportazione dei dati da un componente DBGrid, verso programmi esterni. Potrebbe suonare strano dato che parliamo di DBGrid e quindi di dati presenti in un db che potremmo esportare direttamente dal relativo dataset. Ciò è vero, ma in presenza di una DBGrid con campi calcolati che non sono presenti nel database, non potremmo esportarli.

Quindi partiamo con una procedura alla quale passare la grid con i dati da copiare o esportare.

procedure TForm_Esporta.EsportaCSV(dbgrid:tdbgrid);
var a:word;
    riga:string;
begin
 dbgrid.DataSource.DataSet.DisableControls;

 riga:=dbgrid.Fields[0].DisplayName;
  for a := 1 to dbgrid.FieldCount-1 do riga:=riga+';'+dbgrid.fields[a].DisplayName;
  // Esporta i nomi dei campi della grid nella memo di appoggio
  memo1.Lines.Add(riga);

 while not dbgrid.DataSource.DataSet.Eof do begin
  riga:=dbgrid.Columns[0].Field.AsString;
  for a := 1 to dbgrid.Columns.Count-1 do 
  riga:=riga+';'+dbgrid.Columns[a].Field.AsString;
  // Esporta i valori di tutti i campi della grid nella memo di appoggio
  memo1.Lines.Add(riga);
  dbgrid.DataSource.DataSet.Next;
end;
dbgrid.DataSource.DataSet.EnableControls;

end;

La procedura EsportaCSV riceve una dbgrid in ingresso esportando i dati in una meno di appoggio, in questo esempio ho usato una memo di appoggio dalla quale poi fare le operazioni.

Una volta processata la dbgrid, basterà scegliere cosa fare con i dati.

// Copia dei dati nella clipboard
  memo1.SelectAll;
  memo1.CopyToClipboard;
  MessageDlg('Tabella copiata!', mtInformation, [mbOk], 0, mbOk);

// Esportazione dei dati in un file csv/testo
  memo1.Lines.SaveToFile(filecsv);
  MessageDlg('Tabella esportata in '+filecsv, mtInformation, [mbOk], 0, mbOk);

Semplice no? Buon lavoro.


Scroll Up

Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

Questo sito utilizza i cookie per fornire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o cliccando su "Accetta" permetti il loro utilizzo.

Chiudi