Professional Documents
Culture Documents
Enestecaptulomostraremoslaformadecrearreportesdeunamaneramuysencilla
utilizandoiReport.
Pasos:
1. DescargarelpluginiReport
2. Crearreporte
3. Desarrollarelcdigoparaimprimirreporte.
1
Descomprimirelarchivo.zip
DesdeelmendeNetBeansTools>Plugins>PestaaDownloaded>Presionarelbotn
AddPlugins
EnelproyectoseleccionarBuildwithdependences
Nosubicamosenresources>clicderechoyseleccionarNew>Categories:OtherFile
Types:Folder
Crearelpaquetereportesdentroderesources
2
NosubicamosenreportesyseleccionarNewOther
SeleccionarCategories:Report
FileTypes:Emptyreport
darelnombre
3
semuestraeldiseadordereportes
RevisamoslosatributosdelEntityEstatus.java
AbrimoselreporteyenFieldagregamoslostresfields.ClicderechoseleccionarAddField
segeneraelnombrefield1
4
renombraraidestatus,estatus,esinicial
Enlapaletalecambiamoseltipodedatoenlaspropiedades
PropiedadFieldClass
ArrastramosloscamposalaseccinDetail1,demaneraautomticasecolocaenlacolumna
elttulo.
ArrastraslabelStaticTextdesdelapaletaalaseccinPageHeader
5
EneltextocolocamosESTATUSylaspropiedadesseleccionamosBold,paraquelocoloque
ennegrita.
EnToolsarrastramosCurrentdateparaagregarlafechadelsistema.
compilamoselreporte
Enlabarrasegeneraelmensajedecompilacinexitosa
Semuestraelreportecompilado
6
CREAR CDI/BEANS PARA MANEJO DE IMPRESIONES
CDIBeansGestorImpresion.javalousaremosparagestionarlasdiversosmtodos
pararealizarlasimpresiones.
CrearemoslosmtodoscondosparmetrosList<?>t,colocamosel?paraquepodamos
pasarcuallistdeobjetosalmtodo,yStringruta,eslarutadelreporte,HashMapparalos
parmetrosqueusaremosenlosreportes.
imprimir(List<?>t,Stringruta,HashMaphashmap),imprimelalistadeobjetos
pasados
pdf(List<?>t,Stringruta,HashMaphashmap),generaunpdf
docx(List<?>t,Stringruta,HashMaphashmap),generaunarchivodocx
xlsx(List<?>t,Stringruta,HashMaphashmap),generaunarchivoxlsx
odt(List<?>t,Stringruta,HashMaphashmap),generaunarchivoodt
ppt(List<?>t,Stringruta,HashMaphashmap),generaunarchivoppt
preparar(List<?>t,Stringruta,HashMaphashmap),seutilizainternamentepara
configurarelentornodelreporte.
Deestamanerapodemosinvocarelreportedesdeelcontroller,dondepasaremoslalistade
objetos
publicStringimprimir(){
Stringruta="/resources/reportes/estatus.jasper"
HashMapparameters=newHashMap()
gestorImpresion.imprimir(estatusFacade.getEstatusList(),ruta,parameters)
returnnull
}
CrearelCDIBeans
DesdemenFile,seleccioneNew
enCategories,seleccioneJavaServerFaces
enFileTypes,seleccioneJSFManagedBeans
ClassName:GestorImpresion
Packagecom.avbravo.scrumweb.generales
Scope:request
CdigocompletodeGestorImpresion.java
importjava.io.ByteArrayOutputStream
importjava.io.IOException
importjava.util.HashMap
importjava.util.List
importjavax.enterprise.context.RequestScoped
importjavax.faces.context.FacesContext
importjavax.inject.Named
importjavax.servlet.ServletContext
importjavax.servlet.ServletOutputStream
importjavax.servlet.http.HttpServletResponse
importnet.sf.jasperreports.engine.JRException
importnet.sf.jasperreports.engine.JRExporterParameter
importnet.sf.jasperreports.engine.JasperExportManager
importnet.sf.jasperreports.engine.JasperFillManager
importnet.sf.jasperreports.engine.JasperPrint
importnet.sf.jasperreports.engine.data.JRBeanCollectionDataSource
importnet.sf.jasperreports.engine.export.JRPdfExporter
importnet.sf.jasperreports.engine.export.oasis.JROdtExporter
importnet.sf.jasperreports.engine.export.ooxml.JRDocxExporter
importnet.sf.jasperreports.engine.export.ooxml.JRPptxExporter
importnet.sf.jasperreports.engine.export.ooxml.JRXlsxExporter
/**
*
*@authoravbravo
*/
@Named
@RequestScoped
publicclassGestorImpresion{
JRBeanCollectionDataSourceds
FacesContextfacesContext
ServletContextscontext
JasperPrintjasperPrint
/**
*CreatesanewinstanceofGestorImpresion
8
*/
publicGestorImpresion(){
}
publicStringimprimir(List<?>t,Stringruta,HashMaphashmap){
try{
preparar(t,ruta,hashmap)
ByteArrayOutputStreambaos=newByteArrayOutputStream()
JRPdfExporterexporter=newJRPdfExporter()
exporter.setParameter(JRExporterParameter.JASPER_PRINT,jasperPrint)
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,baos)
exporter.exportReport()
byte[]bytes=baos.toByteArray()
if(bytes!=null&&bytes.length>0){
HttpServletResponseresponse=(HttpServletResponse)
facesContext.getExternalContext().getResponse()
response.setContentType("application/pdf")
response.setHeader("Content disposition","inline
filename=\"relatorioPorData.pdf\"")
response.setContentLength(bytes.length)
ServletOutputStreamoutputStream=response.getOutputStream()
outputStream.write(bytes,0,bytes.length)
outputStream.flush()
outputStream.close()
}
}catch(JRException|IOExceptione){
JSFUtil.addErrorMessage(e.getMessage())
}
returnnull
}
publicStringpdf(List<?>t,Stringruta,HashMaphashmap){
try{
preparar(t,ruta,hashmap)
HttpServletResponsehttpServletResponse=(HttpServletResponse)
FacesContext.getCurrentInstance().getExternalContext().getResponse()
httpServletResponse.addHeader("Content disposition",
"attachmentfilename=report.pdf")
ServletOutputStreamservletOutputStream=httpServletResponse.getOutputStream()
JasperExportManager.exportReportToPdfStream(jasperPrint,servletOutputStream)
FacesContext.getCurrentInstance().responseComplete()
}catch(JRException|IOExceptione){
JSFUtil.addErrorMessage(e.getMessage())
9
}
returnnull
}
publicStringdocx(List<?>t,Stringruta,HashMaphashmap){
try{
preparar(t,ruta,hashmap)
HttpServletResponsehttpServletResponse=(HttpServletResponse)
FacesContext.getCurrentInstance().getExternalContext().getResponse()
httpServletResponse.addHeader("Content disposition",
"attachmentfilename=report.docx")
ServletOutputStreamservletOutputStream=httpServletResponse.getOutputStream()
JRDocxExporterdocxExporter=newJRDocxExporter()
docxExporter.setParameter(JRExporterParameter.JASPER_PRINT,jasperPrint)
docxExporter.setParameter(JRExporterParameter.OUTPUT_STREAM,
servletOutputStream)
docxExporter.exportReport()
FacesContext.getCurrentInstance().responseComplete()
}catch(JRException|IOExceptione){
JSFUtil.addErrorMessage(e.getMessage())
}
returnnull
}
publicStringxlsx(List<?>t,Stringruta,HashMaphashmap){
try{
preparar(t,ruta,hashmap)
HttpServletResponsehttpServletResponse=(HttpServletResponse)
FacesContext.getCurrentInstance().getExternalContext().getResponse()
httpServletResponse.addHeader("Content disposition",
"attachmentfilename=report.xlsx")
ServletOutputStreamservletOutputStream=httpServletResponse.getOutputStream()
JRXlsxExporterdocxExporter=newJRXlsxExporter()
docxExporter.setParameter(JRExporterParameter.JASPER_PRINT,jasperPrint)
docxExporter.setParameter(JRExporterParameter.OUTPUT_STREAM,
servletOutputStream)
docxExporter.exportReport()
FacesContext.getCurrentInstance().responseComplete()
}catch(JRException|IOExceptione){
JSFUtil.addErrorMessage(e.getMessage())
}
returnnull
}
10
publicStringodt(List<?>t,Stringruta,HashMaphashmap){
try{
preparar(t,ruta,hashmap)
HttpServletResponsehttpServletResponse=(HttpServletResponse)
FacesContext.getCurrentInstance().getExternalContext().getResponse()
httpServletResponse.addHeader("Content disposition",
"attachmentfilename=report.odt")
ServletOutputStreamservletOutputStream=httpServletResponse.getOutputStream()
JROdtExporterdocxExporter=newJROdtExporter()
docxExporter.setParameter(JRExporterParameter.JASPER_PRINT,jasperPrint)
docxExporter.setParameter(JRExporterParameter.OUTPUT_STREAM,
servletOutputStream)
docxExporter.exportReport()
FacesContext.getCurrentInstance().responseComplete()
}catch(JRException|IOExceptione){
JSFUtil.addErrorMessage(e.getMessage())
}
returnnull
}
publicStringppt(List<?>t,Stringruta,HashMaphashmap){
try{
preparar(t,ruta,hashmap)
HttpServletResponsehttpServletResponse=(HttpServletResponse)
FacesContext.getCurrentInstance().getExternalContext().getResponse()
httpServletResponse.addHeader("Content disposition",
"attachmentfilename=report.pptx")
ServletOutputStreamservletOutputStream=httpServletResponse.getOutputStream()
JRPptxExporterdocxExporter=newJRPptxExporter()
docxExporter.setParameter(JRExporterParameter.JASPER_PRINT,jasperPrint)
docxExporter.setParameter(JRExporterParameter.OUTPUT_STREAM,
servletOutputStream)
docxExporter.exportReport()
FacesContext.getCurrentInstance().responseComplete()
}catch(JRException|IOExceptione){
JSFUtil.addErrorMessage(e.getMessage())
}
returnnull
}
privatevoidpreparar(List<?>t,Stringruta,HashMaphashmap){
try{
11
ds=newJRBeanCollectionDataSource(t)
facesContext=FacesContext.getCurrentInstance()
facesContext.responseComplete()
scontext=(ServletContext)facesContext.getExternalContext().getContext()
jasperPrint=JasperFillManager.fillReport(scontext.getRealPath(ruta),hashmap,ds)
}catch(Exceptione){
JSFUtil.addErrorMessage(e.getMessage())
}
}
}
12
EditarEstatusDataController.java,inyectarGestionImpresionyagregarelmtodo
imprimir().Enesteindicaremoslarutadelreporte,lalistadeentitysyelHashMapconlos
parmetros.EinvocamosalmtodocorrespondienteenGestionImpresion
@Inject
GestorImpresiongestorImpresion
publicStringimprimir(){
Stringruta="/resources/reportes/estatus.jasper"
HashMapparameters=newHashMap()
gestorImpresion.imprimir(estatusFacade.getEstatusList(),ruta,parameters)
returnnull
}
/*
*imprimirunsoloentity
*/
publicStringimprimir(){
List<Estatus>list=newArrayList<>()
list.add(estatus)
Stringruta="/resources/reportes/estatus.jasper"
HashMapparameters=newHashMap()
gestorImpresion.imprimir(list,ruta,parameters)
returnnull
}
13
Editamosestatuslist.xhmtl,agregamosunfooterconelbotonimprimir,utilizamoseneste
casoimmediate=true,paraevitarqueserealicenlasvalidaciones,yaquedesamosmostrar
elreportedirectamente.
<f:facetname="footer">
<p:commandButtonimmediate="true"id="printButton"value="#{app['boton.print']}"
action="#{estatusDataController.imprimir()}"icon="uiiconprint"ajax="false"/>
</f:facet>
</p:dataTable>
</p:dialog>
Cuandoejecutamoselproyectoyseleccionamosestatuslist,semuestraelbotnImprimir
alpresionarlosemuestraelreporteparaimprimir
14