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