FastReportExport é uma biblioteca para exportação de relatórios com Fast Report para ambientes multithreading e não GUI(Graphical User Interface).
Implementado na linguagem Delphi, utiliza o conceito de fluent interface para guiar no uso da biblioteca, desenvolvido para exportar relatórios nos formatos PDF, HTML, PNG, entre outros, conforme a necessidade.
Ambientes
Para utilizar o FastReportExport é necessário a instalação do componente Fast Report.
Utilizando o Boss (Dependency manager for Delphi) é possível instalar a biblioteca de forma automática.
boss install github.com/antoniojmsjr/FastReportExport
Se você optar por instalar manualmente, basta adicionar as seguintes pastas ao seu projeto, em Project > Options > Delphi Compiler > Target > All Configurations > Search path
..\FastReportExport\Source
Providers é uma interface utilizada pela biblioteca para exportação dos relatórios que disponibiliza a classe TfrxCustomExportFilter para configuração, e pode ser extendida para implementação de outros formatos de arquivo.
Arquivo | Provedor | TfrxCustomExportFilter |
---|---|---|
IFRExportPDF | TfrxPDFExport | |
HTML | IFRExportHTML | TfrxHTMLExport |
PNG | IFRExportPNG | TfrxPNGExport |
BMP | IFRExportBMP | TfrxBMPExport |
JPEG | IFRExportJPEG | TfrxJPEGExport |
CSV | IFRExportCSV | TfrxCSVExport |
RTF | IFRExportRTF | TfrxRTFExport |
XLS | IFRExportXLS | TfrxXLSExport |
XLSX | IFRExportXLSX | TfrxXLSXExport |
DOCX | IFRExportDOCX | TfrxDOCXExport |
Exemplo
var
lFRExportPDF: IFRExportPDF;
lFRExportHTML: IFRExportHTML;
lFRExportPNG: IFRExportPNG;
begin
//PROVIDER PDF
lFRExportPDF := TFRExportProviderPDF.New;
lFRExportPDF.frxPDF.Subject := 'Samples Fast Report Export';
lFRExportPDF.frxPDF.Author := 'Antônio José Medeiros Schneider';
//PROVIDER HTML
lFRExportHTML := TFRExportProviderHTML.New;
//PROVIDER PNG
lFRExportPNG := TFRExportProviderPNG.New;
lFRExportPNG.frxPNG.JPEGQuality := 100;
end;
DataSets é uma interface utilizada pela biblioteca para comunicação com o banco de dados através dos componentes:
Classe | Componente |
---|---|
TDataSet | Nativo |
TfrxDBDataset | Fast Report |
Para exemplificar o uso do biblioteca foi utilizado os dados da API de localidades do IBGE para geração e exportação do relatório.
Arquivo de exemplo da exportação: LocalidadesIBGE.pdf
Os exemplos estão disponíveis na pasta do projeto:
..\FastReportExport\Samples
Banco de dados de exemplo
- Firebird: 2.5.7 Donwload
- Arquivo BD:
..\FastReportExport\Samples\DB
Relatório de exemplo
..\FastReportExport\Samples\Report
Exemplo
uses FRExport, FRExport.Types, FRExport.Interfaces.Providers;
var
lFRExportPDF: IFRExportPDF;
lFRExportHTML: IFRExportHTML;
lFRExportPNG: IFRExportPNG;
lFileStream: TFileStream;
lFileExport: string;
begin
//PROVIDER PDF
lFRExportPDF := TFRExportProviderPDF.New;
lFRExportPDF.frxPDF.Subject := 'Samples Fast Report Export';
lFRExportPDF.frxPDF.Author := 'Antônio José Medeiros Schneider';
//PROVIDER HTML
lFRExportHTML := TFRExportProviderHTML.New;
//PROVIDER PNG
lFRExportPNG := TFRExportProviderPNG.New;
lFRExportPNG.frxPNG.JPEGQuality := 100;
//CLASSE DE EXPORTAÇÃO
try
TFRExport.New.
DataSets.
SetDataSet(qryEstadosBrasil, 'EstadosBrasil').
SetDataSet(frxdbMunicipioEstado).
SetDataSet(frxdbMunicipioRegiao).
SetDataSet(qryEstadoRegiao, 'EstadoRegiao').
SetDataSet(qryMunicipios, 'Municipios').
&End.
Providers.
SetProvider(lFRExportPDF).
SetProvider(lFRExportHTML).
SetProvider(lFRExportPNG).
&End.
Export.
SetFileReport(TUtils.PathAppFileReport). //LOCAL DO RELATÓRIO *.fr3
Report(procedure(pfrxReport: TfrxReport) //CONFIGURAÇÃO DO COMPONENTE DE RELATÓRIO DO FAST REPORT
var
lfrxComponent: TfrxComponent;
lfrxMemoView: TfrxMemoView absolute lfrxComponent;
begin
pfrxReport.ReportOptions.Author := 'Antônio José Medeiros Schneider';
//PASSAGEM DE PARÂMETRO PARA O RELATÓRIO
lfrxComponent := pfrxReport.FindObject('mmoProcess');
if Assigned(lfrxComponent) then
begin
lfrxMemoView.Memo.Clear;
lfrxMemoView.Memo.Text := Format('Aplicativo de Exemplo: %s', ['VCL']);
end;
//VARIÁVEIS DO RELATÓRIO
pfrxReport.Variables.Variables['DATA_HORA_IMPRESSAO'] := QuotedStr(DateTimeToStr(Now));
end).
Execute; //EXECUTA O PROCESSO DE EXPORTAÇÃO DO RELATÓRIO
except
on E: Exception do
begin
if E is EFRExport then
ShowMessage(E.ToString)
else
ShowMessage(E.Message);
Exit;
end;
end;
//SALVAR PDF
if Assigned(lFRExportPDF.Stream) then
begin
lFileStream := nil;
try
lFileExport := Format('%s%s', [TUtils.PathApp, 'LocalidadesIBGE.pdf']);
lFileStream := TFileStream.Create(lFileExport, fmCreate);
lFileStream.CopyFrom(lFRExportPDF.Stream, 0);
finally
FreeAndNil(lFileStream);
end;
end;
//SALVAR HTML
if Assigned(lFRExportHTML.Stream) then
begin
lFileStream := nil;
try
lFileExport := Format('%s%s', [TUtils.PathApp, 'LocalidadesIBGE.html']);
lFileStream := TFileStream.Create(lFileExport, fmCreate);
lFileStream.CopyFrom(lFRExportHTML.Stream, 0);
finally
FreeAndNil(lFileStream);
end;
end;
//SALVAR PNG
if Assigned(lFRExportPNG.Stream) then
begin
lFileStream := nil;
try
lFileExport := Format('%s%s', [TUtils.PathApp, 'LocalidadesIBGE.png']);
lFileStream := TFileStream.Create(lFileExport, fmCreate);
lFileStream.CopyFrom(lFRExportPNG.Stream, 0);
finally
FreeAndNil(lFileStream);
end;
end;
end;
Exemplo compilado
Download: Demo.zip
Teste de stress para aplicações web usando JMeter:
..\FastReportExport\Samples\JMeter
FastReportExport.mp4
FastReportExport
is free and open-source software licensed under the