Olá galera, nesta Quick Tips, irei mostrar como podemos exportar os dados de relatórios feito em Rave Reports para PDF, HTML, RTF, Text(estes componentes estão presentes na palheta RaveReports).

 

Infelizmente o Rave Reports , não tem como exportar os dados para Excel, assim como o Crystal Reports, porém existe um componente de terceiro que faz este feito, mas não cheguei a testar o mesmo.

 

Vamos criar uma VCL Forms Application – Delphi:

Adicione um TButton e um TRadioGroup e um SaveDialog

 

Adicione no TRadioGroup os seguintes itens :

  • PDF
  • HTML
  • RichText
  • Text

 

Selecione o SaveDialog :

Na propriedade Filter coloque o seguinte código : PDF Files (*.pdf)|*.pdf|HTML Files (*.htm)|*.htm;*.html|Rich Text (*.rtf)|*.rtf|Text File (*.txt)|*.txt

 

Agora no clique do TButton vamos implementar o código para exportação :

 

procedure TfrmExport.btnExportarClick(Sender: TObject);

var

  MStream: TMemoryStream;

begin

  SaveDialog1.FilterIndex :=  Succ(RadioGroup1.ItemIndex); {posicion

posicionar na extensao correta}

  if SaveDialog1.Execute then

  begin

    MStream := TMemoryStream.Create;

    dmReport.RvProject1.Engine := dmReport.RvNDRWriter1;

    dmReport.RvNDRWriter1.Stream := MStream;

    dmReport.RvNDRWriter1.StreamMode := smUser;

    dmReport.RvProject1.ExecuteReport

     (‘rptCliente’);

  case RadioGroup1.ItemIndex of

  0: dmReport.RvRenderPDF1.PrintRender(dmReport.RvNDRWriter1.Stream,   SaveDialog1.FileName);

  1: dmReport.RvRenderHTML1.PrintRender(dmReport.RvNDRWriter1.Stream,

      SaveDialog1.FileName);

  2: dmReport.RvRenderRTF1.PrintRender(dmReport.RvNDRWriter1.Stream,

      SaveDialog1.FileName);

  3: dmReport.RvRenderText1.PrintRender(dmReport.RvNDRWriter1.Stream,

      SaveDialog1.FileName);

  end;

  end;

end;

 

 

Com este código podemos ter em nossos sistemas, que utilizam o Rave Reports, um mecanismos de exportação, podemos ao invés de implementar esta rotina no TButton, podemos criar uma função com o parâmetro do nome do relatório e o tipo de exportação por exemplo, tornando esta rotina reutilizável.

Veja um exemplo, criamos um tipo TTipoExportacao

 

Type

            TTipoExportacao = (TPDF, THTML, TRTF, TText);

 

procedure TfrmExport.btnExportarClick(xRelatorio: String; xTipoExportacao : TTipoExportacao);

var

  MStream: TMemoryStream;

begin

  SaveDialog1.FilterIndex :=  Succ(RadioGroup1.ItemIndex); {posicion

posicionar na extensao correta}

  if SaveDialog1.Execute then

  begin

    MStream := TMemoryStream.Create;

    dmReport.RvProject1.Engine := dmReport.RvNDRWriter1;

    dmReport.RvNDRWriter1.Stream := MStream;

    dmReport.RvNDRWriter1.StreamMode := smUser;

    dmReport.RvProject1.ExecuteReport

     (xRelatorio);

  case xTipoRelatorio of

  TPDF: dmReport.RvRenderPDF1.PrintRender(dmReport.RvNDRWriter1.Stream,       SaveDialog1.FileName);

  THTML: dmReport.RvRenderHTML1.PrintRender(dmReport.RvNDRWriter1.Stream,

      SaveDialog1.FileName);

  TRTF: dmReport.RvRenderRTF1.PrintRender(dmReport.RvNDRWriter1.Stream,

      SaveDialog1.FileName);

  TText: dmReport.RvRenderText1.PrintRender(dmReport.RvNDRWriter1.Stream,

      SaveDialog1.FileName);

  end;

  end;

end;

 

Fico por aqui ate à próxima Quick Tips.

 

Um abraço

 

Wesley Y

wyamazack@rwsolution.com.br