Exportando relatorios em Rave Reports

Veja nesta quick, como podemos exportar relatórios em Rave Reports.


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 :

 

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

 


Artigos relacionados