You are on page 1of 14

Capitulo6iReport

Enestecaptulomostraremoslaformadecrearreportesdeunamaneramuysencilla
utilizandoiReport.


Pasos:
1. DescargarelpluginiReport
2. Crearreporte
3. Desarrollarelcdigoparaimprimirreporte.

Descargamos el plugin de iReport para NetBeans


http://plugins.netbeans.org/plugin/4425/ireport

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

You might also like