tutoriales de programacion java_ creación de reportes con jasperrepots y ireports - parte 1_...
DESCRIPTION
tipTRANSCRIPT
-
14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte1:ReportesconConexinaBasedeDatos
http://www.javatutoriales.com/2009/02/creaciondereportesconjasperrepotsy.html 1/29
BlogdedicadoatemasdeprogramacinactualesusandoellenguajedeprogramacinJavaylasltimasversionesdesusAPIsyHerramientas.
TutorialesdeProgramacionJava
Pginaprincipal PginadeConcursos TutorialesUPAO2010 PresentacionesCapacitacin
DOMINGO,8DEFEBRERODE2009
CreacindeReportesconJasperRepotsyiReportsParte1:ReportesconConexinaBasedeDatosEnunpostanteriorhablunpocodelasventajasquetenemosalcrearreportesconelAPIJasperReportsylaherramientaiReport.
AhoraveremosunosejemplosdecmousarlosennuestrasaplicacionesJava.Dividirestosejemplosenvariospostdedicandocadaunoaunaformamuyparticulardelacreacindereportes.
Paraestosejemplosusaremoslasltimasversionesdeambasherramientas(queenestaactualizacinsonlas3.7.6)
LoprimeroqueharemosesbajarelJasperReportsyiReport.EsteltimolousaremosensufacetadeaplicacinstandaloneynocomopluginparaNetBeans.EstoporaquellosquenoslesgusteusarelNetBeans.
Comoyahabadicho:LaltimaversindeiReportestbasadaenlaplataformadeNetBeansporloque,comopuedenobservarenlaimagensiguiente,lasinterfacesdeambossonmuyparecidas.
Enesteprimerpostveremoscmocrearreporteshaciendousodeunaconexinalabasededatosdirectamentedesdenuestroreporte.
Loprimeroqueharemosescrearunabasededatoscontablasydatosdepruebasparapoderteneralgointeresantequeverennuestrosreportes.EnestecasousarMySQLversin5.1,elcualpuedendescargardesdesupginaoficial.UsandoelconectorparaJavaversin5.1.13 que pueden descargar desde la pgina de MySQL. Pero cualquier base de datos que les guste funcionar para nuestrosejemplos.
Labasededatosqueusarsellama"pruebaReportes"ycontienelatabla"participantes".Esteeselscriptpara lacreacindeestatabla:
CREATETABLE'participantes'('ID'bigint(21)NOTNULL,'NOMBRE'varchar(100)NOTNULL,'USERNAME'varchar(100)NOTNULL,'PASSWORD'varchar(100)NOTNULL,'COMENTARIOS'varchar(100)defaultNULL,PRIMARYKEY('ID'))ENGINE=InnoDBDEFAULTCHARSET=latin1
Yesteeselscriptparapoblarlatablaanterior:
DONACIONES
JAVATUTORIALESENFACEBOOK
JavaTutoriales
A24385personaslesgustaJavaTutoriales
PluginsocialdeFacebook
Megusta
JavaTutorialeshaaadidounafotonueva.
16MegustaSehacompartido1vez
Megusta Comentar
13demarzo
25 Ms Siguienteblog
-
14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte1:ReportesconConexinaBasedeDatos
http://www.javatutoriales.com/2009/02/creaciondereportesconjasperrepotsy.html 2/29
insertinto'participantes'('ID','NOMBRE','USERNAME','PASSWORD','COMENTARIOS')values(1,'Participante1','par1user','part1pass','comentariosparticipante1');insertinto'participantes'('ID','NOMBRE','USERNAME','PASSWORD','COMENTARIOS')values(2,'Participante2','par2user','part2pass','comentariosparticipante2');insertinto'participantes'('ID','NOMBRE','USERNAME','PASSWORD','COMENTARIOS')values(3,'Participante3','par3user','part3pass','comentariosparticipante3');insertinto'participantes'('ID','NOMBRE','USERNAME','PASSWORD','COMENTARIOS')values(4,'Participante4','par4user','part4pass','comentariosrespectoalparticipante4');insertinto'participantes'('ID','NOMBRE','USERNAME','PASSWORD','COMENTARIOS')values(5,'Participante5','par5user','part5pass','sincomentariosparaelparticipante5');insertinto'participantes'('ID','NOMBRE','USERNAME','PASSWORD','COMENTARIOS')values(6,'Participante6','par6user','part6pass',NULL);insertinto'participantes'('ID','NOMBRE','USERNAME','PASSWORD','COMENTARIOS')values(7,'Participante7','par7user','part7pass','comentatiosparticipante7');insertinto'participantes'('ID','NOMBRE','USERNAME','PASSWORD','COMENTARIOS')values(8,'Participante8','par8user','part8pass','comentariosparticipante8');insertinto'participantes'('ID','NOMBRE','USERNAME','PASSWORD','COMENTARIOS')values(9,'Participante9','par9user','part9pass','comentariosparticipante9');insertinto'participantes'('ID','NOMBRE','USERNAME','PASSWORD','COMENTARIOS')values(10,'Participante10','par10user','part10pass',NULL);
Ahora que tenemosnuestros datos crearemosun "datasource" eniReport para poder acceder a nuestros datos y hacer pruebasdirectamente, sinnecesidaddeunaaplicacinJava (porelmomento).Para crearestedatasourcehacemosclicenel cono "ReportDatasources"ubicadoenlabarradeherramientasdeiReport:
Con lo que se abrir la ventana de "Connections / Datasources" que en este momento debe contener solo un "Emptydatasource"ylaconexinaunabasededatosdepruebaenHSQLDB.Ahorahacemosclicenelbotn"New"paracrearnuestronuevodatasource.
En la nueva ventana que se abre seleccionamos "DatabaseJDBCconnection" y presionamos el botn "Next". En la siguienteventanadebemosproporcionaralgunosdatoscomoelnombreseledaraldatasourceylosdatospararealizarlaconexindelabasededatos. Despus de llenar estos datos su ventana debe haber quedado ms o menos como la siguiente (recuerden usar el "JDBCDriver"quecorrespondaalmanejadordebasededatosqueestnusando:
ParticiparenestesitioGoogleFriendConnect
Miembros(195) Ms
Yaeresmiembro?Iniciarsesin
SEGUIDORES
2015(1)
2013(1)
2012(2)
2011(11)
2010(10)
2009(22)septiembre(2)
agosto(2)
julio(1)
junio(3)
mayo(2)
abril(5)
marzo(2)
febrero(2)CreacindeReportesconJasperRepots
yiReports...
InstalacindePluginsenNetBeans
enero(3)
ARCHIVODELBLOG
-
14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte1:ReportesconConexinaBasedeDatos
http://www.javatutoriales.com/2009/02/creaciondereportesconjasperrepotsy.html 3/29
Antesdeguardarestaconfiguracinhaganclicenelbotn"Test"paraprobarquetodoslosdatosproporcionadossoncorrectos.Sitodohasalidobien,alhacerclicenelbotn "Save" la ventanaactual debe cerrarse y nuestro datasourcedebeestar ahoraen la ventana"Connections/Datasources".
Ahorapasaremosacrearnuestronuevoreporte.Estaserlaprimerynicaocasinenlaqueharemosusodel"ReportWizard"paraayudarnosagenerarelreporte.Paraestovamosalmen"File>New...".Conestoseabrirlaventanade"NewFile"enlaqueseleccionaremosel formatodenuestro reporte.Enmicasoseleccionar laplantilla "Wood"aunquepuedenseleccionar laqueustedesdeseen,yhacemosclicenelbotn"LaunchReportWizard"
Estewizardnosayudaracrearunreporte100%funcionalen6pasos(enrealidad5yaqueempezamosdirectamenteenelpaso2)quepodremosverdesdeelmismoiReportsinnecesidaddeescribirunasololneadecdigoJava.Estos7pasosson:
1. Seleccindelaubicacinenlaqueseguardarnuestroreporte.2. Seleccindeldatasourceeintroduccindelqueryparaobtenerlosdatosquenosinteresan.3. Seleccindelosdatosquequeremosmostrarenelreporte.4. Creacindegruposparaelreporte(seexplicarenunpostposterior).5. Seleccindellayoutoacomododelosdatosenelreporte6. Felicitacinportenerminarnuestroreporte=D.
Lospasosinteresantessonel3yel4,asqueserenestosenlosquenosenfocaremosms.
Alex
Programador Java con algunos aos deexperiencia en mltiples poyectos y conmltiples APIs y herramientas deseoso decompartir experiencias con el resto deprogramadores.
Vertodomiperfil
DATOSPERSONALES
-
14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte1:ReportesconConexinaBasedeDatos
http://www.javatutoriales.com/2009/02/creaciondereportesconjasperrepotsy.html 4/29
El paso 1 se realiza de forma automtica, as que no tenemos mucho que hacer en l. En el paso 2 (en donde comenzamos)seleccionamoseldirectorioenelquequeremosguardarnuestroreporteyelnombrequetendr.
Nota:LaextensindedocumentosdereportesgeneradosporJasperReportses".jrxml"quesignifica"jasperreportsxml",yesundocumentoxmlquecontienelosdatosparagenerarunarchivocompilado(".jasper")queeselqueusaremosprincipalmenteennuestrasaplicacionesJava(aunquetambinpodriamosoptarporcompilarnuestroarchivo".jrxml"desdelamismaaplicacinJavayasgenerarelarchivo".jasper"correspondiente).
Enestemomentonoimportamuchoendondeguardemoselarchivoquesegenerar,yaqueposteriormentetendremosquemoverloparaquenuestraaplicacinjavapuedaencontrarlo.Pormipartellamaralarchivo"reporte1".
Hacemosclicenelbotn"Next"paracontinuarconelpaso3.Enestepasodebemosseleccionareldatasourcedesdeelquelosdatosdel reporte sern tomados. Por default est seleccionado el "Emptydatasource". As que nosotros seleccionamos el datasource"ConexionMySQLPruebas"(eldatasourcequecreamosanteriormente).
Alhacerelcambiodeldatasourceveremosqueapareceuntextareaconelttulo"Query(SQL)"yenlaparteinferiordebemostenerunmensajedeerrorquedice"Invalidquery".
Esto ocurre porque, efectivamente, en el textarea no tenemos una consulta vlida (de hecho no tenemos ninguna). Por lo que ahoracorregiremoseso.Paraestotenemos3opciones:
1. Escribirunaconsultanosotrosmismosdeformadirecta.2. Cargarunaconsultaquetengamosguardadaenalgnarchivo.sqlo.txt.3. Crearunaconsultausandoel"diseadordeconsultas".
Nosotrosharemosusodeldiseadordeconsultas.Hacemosclicenelbotn"Designquery"conloqueseabrirunanuevaventanaqueestdivididaentressecciones.
Laprimerseccinesladelaestructuradelaconsulta.Aqubsicamentepodremoscambiarentrelassentenciasqueestamoseditando(SELECT,WHERE,ORDERBY,etc.).Lasegundaseccinesladeloselementosdenuestrabasededatos(tablas,vistas,ytemporaleslocales).Aqupodremosseleccionarloselementosdelosquequeremosobtenerdatosparalaconsulta.Finalmentelatercerseccinnosmuestraloselementosquehemosseleccionadodelasegundaseccinparaquepodamosseleccionarlosdatosaobtener.
Laconsultaqueharemosserparaobtenertodoslosdatosdelatabla"participantes",conexcepcindel"ID".Paraestohacemosdobleclicsobreelnombredelatabla"participantes"enlasegundaseccindelaventanaquetenemosabierta.Conestoapareceren la tercer seccin otra ventana conel ttulo "participantes" y un conjunto de checkboxes, cada uno con un campo de nuestratabla.Paragenerarlaconsultaquenosinteresasolamenteseleccionamostodosloscheckboxes(conexcepcindel"ID")yveremosquelaconsultasegeneraenlaprimerseccin.Yasolodamosclicenelbotn"OK".
-
14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte1:ReportesconConexinaBasedeDatos
http://www.javatutoriales.com/2009/02/creaciondereportesconjasperrepotsy.html 5/29
Conestoyatendremosnuestraconsultaeneltextareacorrespondienteypodemoscontinuarconelpaso4,paraloquehacemosclicenelbotn"Next".
En este paso solo tenemos que seleccionar cules campos del query generado en el paso anterior queremos que semuestren en elreporte.Comonosotrosqueremosquesemuestrentodospasamostodosloscamposdelladoizquierdoalladoderechoyhacemosclicenelbotn"Next".
Ahoraenelpaso5debemosseleccionarcmoqueremosquelosdatosseanagrupados.Estoloexplicarenalgnotropost,peroporelmomentodejemostodoenblancoydemosclicenelbotn"Next".
Elltimopasoeselsolamenteunafelicitacinporhabercreadounnuevoreporte^^.
Ahorahacemosclicenelbotn"Finish"yyapodremosverlaplantilladenuestroreporte.
Siqueremosvercomoseverelreportefinal,enestecaso,podemosverunpreviewconlosdatosrealessicambiamosa lavistade"preview"enlaventanadeleditor.
-
14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte1:ReportesconConexinaBasedeDatos
http://www.javatutoriales.com/2009/02/creaciondereportesconjasperrepotsy.html 6/29
Alhacerclicenlapestaade"preview",nuestroreportesecompilarysemostrar.Enestecasoelreportepuedeserprevisualizadoporquelassiguientescondicionessecumplen:
Tenemosunabasededatospoblada(estoesmuyimportante,yaquesinotienedatosobtendremosunmensajedeerror).Tenemosundatasourceconfiguradoparaestabasededatos.Nuestroreportehaceunaconsultadirectaaestabasededatosatravsdeldatasourceanterior.Elreporteestpreparadoparamostrarlosdatosrecuperadosanteriormente.
Comoveremosenlossiguientesposts,podraserquenotodasestascondicionessecumplanalmismotiempo,por loquetendremosproblemasparaverlosdatosenelpreviewdelreporte.
Algoimportantequeocurrealhacerestepreviewesqueelreportesecompilagenerandoelarchivo"reporte1.jasper"elcualeselarchivoqueusaremosdesdelaaplicacinJavaquecrearemosenunmomento.
Siqueremoscompilarnuestroreportedeformamanualpodemoshacerclicenelbotn"CompileReport"delavistadediseo:
Haremosalgunasmodificacionesparaqueestereporteseveaunpocomejor:primerocambiaremoselttuloquedice"WoodTitle"por"ReportedeParticipantes",cambiamoselcolordetextoanegro,yeliminamoselfondoyelsubtituloquetiene.
Ademscambiamosel ttulodecadaunade lascolumnasporalgomsclaro.Porejemplo,podemoscambiarel ttulode lacolumna"participantes_USERNAME"a"Usuario","participantes_NOMBRE"a"Nombre",etc.
Alfinalmireportequedadeestaforma:
Conestepreview:
Ahora que tenemos un reporte que nos agrada (o al menos que no se ve tan mal) veremos cmo generar este reporte desde unaaplicacinJava.
Nota: Hay algunas notaciones usadas en la plantilla del reporte que tal vez no comprendan como $F{participantes_USERNAME} y$V{PAGE_NUMBER}.EstaesunasintaxisespecialqueusaJasperReportsparadefinircamposdeobjetosyvariables,respectivamente.Existeotrotipodedatoqueseusallamadopropiedades($P{propiedad}).Comotodoestofuecolocadoporelwizardnoloexplicarhastaelsiguientepost,porahorasoloconfenenquedebenestarah.
Loprimero queharemoses crear un nuevoproyecto enNetBeans.Para esto vamosalmen "File>newProject...". En laventana de nuevos proyectos seleccionamos la categora "Java" y de tipo de proyecto seleccionamos "Java Application" yhacemosclicenelbotn"Next".Enlasiguienteventanaintroducimoselnombredenuestroproyectoydejamosseleccionadalaopcin
-
14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte1:ReportesconConexinaBasedeDatos
http://www.javatutoriales.com/2009/02/creaciondereportesconjasperrepotsy.html 7/29
"CreateMainClass"y"SetasMainProject".
Hacemosclicenelbotn"Finish"paraquenuestroproyectosegenere.LoqueharemosacontinuacinescrearunabibliotecaquecontengalosarchivosjarsbsicosnecesariosdeJasperReports.DeestaformanotendremosqueagregarcadaunodelosjarscadavezquenecesitemosusarJasperReportsenunproyecto.AdemssiactualizamoslaversindelAPIqueusamos,solodebemosactualizarestabiblioteca.
Paracrearnuestrabibliotecavamosalmen"Tools>Libraries":
Conestoseabrirlaventanadel"LibraryManager".Enestaventanahacemosclicenelbotn"NewLibrary":
Enlaventanaqueseabreescribimoselnombredelanuevabiblioteca(enmicasoser"JasperReports")yeneltipodelabibliotecaseleccionamoslaopcin"ClassLibraries".
Alhacerclicenelbotn"OK"regresaremosal"LibraryManager"y tendremosnuestranuevabibliotecacreada.Peroannoshacefalta agregar los archivos jars que conformarn esta biblioteca. Nos aseguramos que la pestaa "Classpath" est seleccionada yhacemosclicenelbotn"AddJar/Folder"situadoaladerecha.Seabriruncuadrodedialogoparaqueseleccionemoslosjarsquequeremosagregar.
-
14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte1:ReportesconConexinaBasedeDatos
http://www.javatutoriales.com/2009/02/creaciondereportesconjasperrepotsy.html 8/29
Navegamos hasta el directorio en el que tenemos los jars de JasperReports que bajamos anteriormente. Para que los ejemplos queharemosmsadelante(enlossiguientesposts)funcionen,debemosagregaralabibliotecalossiguientesjars:
jasperreports3.7.6.jar
jasperreports3.7.6javaflow.jar
jasperreportsfonts3.7.6.jar
commonsbeanutils1.8.0.jar
commonscollections2.1.1.jar
commonsdigester1.7.jar
commonslogging1.0.4.jar
commonsjavaflow20060411.jar
groovyall1.7.5.jar
iText2.1.7.jar
pngencoder1.5.jar
poi3.6.jar
Algunos de estos jars se encuentran en el directorio "dist" y otros en el directorio "lib" del archivo .zip de JasperRepots quebajamosanteriormente.
Hacemosclicenelbotn"AddJar/Folder"yconestotendremoslistanuestrabiblioteca"JasperReports"paraagregarlaanuestroproyecto.
Hacemosclicenelbotn"OK"pararegresaralambientedetrabajo.
Ahora hacemos clic derecho en el nodo "Libraries" de la ventana "Projects". Con esto se abrir un men contextual con 4opciones,seleccionamoslaopcin"AddLibrary..."
-
14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte1:ReportesconConexinaBasedeDatos
http://www.javatutoriales.com/2009/02/creaciondereportesconjasperrepotsy.html 9/29
Enlaventanaqueseabreseleccionamoslabibliotecaquecreamosanteriormente("JasperReports")yhacemosclicenelbotn"AddLibrary".Alhacerestoveremosseagregaralnodo"Libraries"denuestroproyectotodoslosjarsquetienenuestrabiblioteca.
Nota:Sinocrearonlabibliotecacomoseindicaenpasosanteriorespuedenagregarcadaunodelosjarsmanualmenteseleccionandolaopcin"AddJAR/Folder..."delmencontextual
Recuerdan que cuando vimos el preview del reporte que creamos en iReports se gener un archivo "reporte1.jasper"?TomamosestearchivoylocolocamoseneldirectoriorazdelproyectodeNetBeansqueacabamosdecrear(larazdelproyectoeseldirectorioenelqueseencuentranlossubdirectorios"nbproject","src",entreotros).
Ahoraveremoselcdigoparagenerarelreporteenvariosformatos.
Loprimeroescrearunaconexina labasededatosquecreamosanteriormente.SinosabencmocrearunaconexinJDBCdesdeJava,puedenveresteartculo.Sirecuerdannuestrabasededatosse llama"pruebareportes".Por loqueelcdigoparagenerar laconexinenelsiguiente:
Class.forName("com.mysql.jdbc.Driver");Connectionconexion=DriverManager.getConnection("jdbc:mysql://localhost:3306/pruebareportes","usuario","password");
Nota:Noolvidenagregarel jardeldriverdeMySQLquebajamosanteriormente(mysqlconnectorjava5.1.13bin.jar)alproyectoalnodo"Libraries"delaventana"Project"usandolaopcin"AddJAR/Folder"otambinpuedenagregarlabiblioteca"MySQLJDBCDriver"queyatraeincluidoelNetBeans,delamismaformaqueagregamosladeJasperReports.
SeguramenteenestemomentoelNetBeans lesestmarcandounerrorenestasdos lneasquehemosagregado.Estoesporquealtratar de hacer la conexin es posible que ocurra un error, y por lo tanto es posible que se lance una excepcin de tipo"java.sql.SQLException".Parasolucionarestopuedenhacerdoscosas.Laprimeraes rodearestas lneas (y lassiguientesquecrearemos)enunaclausulatry/catch.Lasegundaopcin(laqueyousar)esagregarlaclausulathrowsExceptionenelmtodo
-
14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte1:ReportesconConexinaBasedeDatos
http://www.javatutoriales.com/2009/02/creaciondereportesconjasperrepotsy.html 10/29
main:
publicstaticvoidmain(String[]args)throwsException{Class.forName("com.mysql.jdbc.Driver");Connectionconexion=DriverManager.getConnection("jdbc:mysql://localhost:3306/pruebareportes","root","123");}
Pueden probar que la conexin se realiza correctamente presionando F6 o haciendo clic en el botn "Run Main Project". Si laconexinserealizacorrectamenteveremoselmensaje
run:BUILDSUCCESSFUL(totaltime:0second)
Enlaventana"Output".Delocontrariovernelerrorelenstacktracedelaexcepcinqueselanz.Unavezquelaconexinserealiceexitosamentepodremosproseguirconlospasosrestantes.
Lo siguiente que debemos hacer es cargar el archivo ".jasper" generado anteriormente y colocarlo en un objeto"net.sf.jasperreports.engine.JasperReport". Para esto hacemos uso de la clase de utilidad"net.sf.jasperreports.engine.util.JRLoader":
JasperReportreporte=(JasperReport)JRLoader.loadObject("reporte1.jasper");
Nota:Podemoscargarelarchivodeestaformagraciasaquecolocamoselarchivo"reporte1.jasper"enlarazdelproyecto.Silocolocaronenotraubicacinsernecesarioquepasencomoparmetroalmtodo"loadObject"laurlabsolutaenlaqueseencuentrelarchivo.
Ahoraelobjeto"reporte"contieneladefinicindelreporte,peroanhacefaltaquellenemosestereporteconlosdatosqueobtendrdelabasededatos.Paraestousamoslaclase"net.sf.jasperreports.engine.JasperFillManager".Estaclasetieneunmtodoesttico,"fillReport",quenospermitellenarelreportecondatosobtenidosdedistintasfuentesdedatos(unadeestasfuenteseslasentenciaSQLqueescribimosalgenerarelreporteconelwizardeniReportsy laconexinqueusaremosenunmomento,veremosquotrasfuentesdedatosexistenycmousarlosenlossiguientesposts).Enestecasolafuentededatoseslaconexindirectaalabasededatosquecreamosanteriormente(elobjetoconexion):
JasperPrintjasperPrint=JasperFillManager.fillReport(reporte,null,conexion);
Pasamos"null"comosegundoparmetroporquenoestamospasandoningnparmetroalreporte(estotambinloveremosdespus).
Elobjeto"JasperPrint"queobtenemoscomoresultadode la invocacindelmtodo"fillReport"es larepresentacindenuestroreporte(ahoracondatos)quepodemosmandaraimprimir,mostrarenpantalla(siestamosusandounaaplicacinswingoawt),o,comoenestecaso,guardarloenunarchivo.
Si estn haciendo una aplicacin swing y quieren mostrar este reporte directamente en un componente pueden pasar el objeto"JasperPrint" que acabamos de crear como parmetro a un nuevo objeto "net.sf.jasperreports.view.JasperViewer", elcualesuncomponenteswing,yagregaresteltimoaunpanel.
Para guardar este reporte a un archivo debemos usar un "net.sf.jasperreports.engine.JRExporter"."net.sf.jasperreports.engine.JRExporter"esunainterface,ylasclasesquelaimplementannospermitengenerarelreporteendistintosformatosdeunaformasencilla.Veremoscmogenerarlosreportesenlossiguientesformatos:
PDFHTMLCSVRTF
-
14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte1:ReportesconConexinaBasedeDatos
http://www.javatutoriales.com/2009/02/creaciondereportesconjasperrepotsy.html 11/29
TXTXLSXMLXLSXDOCXPPTX
Entremuchosotros.
Primerodeclaramosunareferenciaaunobjetodetipo"JRExporter"delasiguienteforma:
JRExporterexporter=
Serestareferencialaqueusaremosdeahoraenadelante.ParaquenuestroreporteseaguardadoenformatoPDFcreamosunobjetodetipo"net.sf.jasperreports.engine.export.JRPdfExporter"yloasignamosanuestrareferenciaexporter:
JRExporterexporter=newJRPdfExporter();
Ahora,lassiguienteslneassoncomunesnoimportandoelformatoenelquevayaaquedarnuestroreporte:
exporter.setParameter(JRExporterParameter.JASPER_PRINT,jasperPrint);exporter.setParameter(JRExporterParameter.OUTPUT_FILE,newjava.io.File("reportePDF.pdf"));exporter.exportReport();
Laprimer lneaasignaanuestroobjeto"exporter"el "jasperPrint" (el reportecondatos)quecreamosanteriormente.Lasegundalnea le dice al "exporter" cul ser el nombre del archivo generado (en este caso "reportePDF.pdf").Recuerden cambiar elnombreylaextensindelarchivocadavezquecambiemosdeformato.
Laltimalneaeslaquerealizaelprocesodeexportacin.
Si ahora ejecutamos nuestra aplicacin veremos que en el directorio raz del proyecto se ha creado un archivo llamado"reportePDF.pdf":
Conelsiguientecontenido:
Porloquenuestrapruebahasidoexitosa^^.
Ahora,paraquenuestroreporteseaexportadoaformatoHTMLcambiamoslalnea:
-
14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte1:ReportesconConexinaBasedeDatos
http://www.javatutoriales.com/2009/02/creaciondereportesconjasperrepotsy.html 12/29
JRExporterexporter=newJRPdfExporter();
por
JRExporterexporter=newJRHtmlExporter();
y el nombre del archivo de "reportePDF.pdf" a "reporteHTML.html". Al ejecutar nuevamente nuestra aplicacin tendremosveremosquesegeneraelarchivo"reporteHTML.html"eneldirectoriorazdelaaplicacin:
Conelsiguientecontenido:
Comopudimosver,conunpardemodificacionespudimoshacerquenuestroreportesegeneraraenunformatocompletamentedistinto.Conelrestodelosformatosesigualdesimple.Usamoslassiguientesclasesparagenerarlosreportesenlossiguientesformatos:
PDF:net.sf.jasperreports.engine.exportJRPdfExporterHTML:net.sf.jasperreports.engine.exportJRHtmlExporterCSV:net.sf.jasperreports.engine.exportJRCsvExporterRTF:net.sf.jasperreports.engine.exportJRRtfExporterXLS:net.sf.jasperreports.engine.exportJRXlsExporterXML:net.sf.jasperreports.engine.exportJRXmlExporterTXT:net.sf.jasperreports.engine.exportJRTextExporterXLSX:net.sf.jasperreports.engine.export.ooxml.JRXlsxExporterDOCX:net.sf.jasperreports.engine.export.ooxml.JRDocxExporterPPTX:net.sf.jasperreports.engine.export.ooxml.JRPptxExporter
Entremuchosotros^_^
Paragenerararchivos.txttendrnqueagregar,adems,estasdoslneas:
exporter.setParameter(JRTextExporterParameter.CHARACTER_WIDTH,12);//textexporterexporter.setParameter(JRTextExporterParameter.CHARACTER_HEIGHT,12);//textexporter
Esteeselcdigodelaclase"Main":
-
14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte1:ReportesconConexinaBasedeDatos
http://www.javatutoriales.com/2009/02/creaciondereportesconjasperrepotsy.html 13/29
PublicadoporAlexen18:34
Reacciones: divertido (2) interesante (8) increible (2) no me gusta (0)
Etiquetas:datasource,ireports,jasperreports,java,reportes
publicclassMain{/***@paramargsargumentosrecibidosporlalineadecomandos*/publicstaticvoidmain(String[]args)throwsException{Class.forName("com.mysql.jdbc.Driver");Connectionconexion=DriverManager.getConnection("jdbc:mysql://localhost:3306/pruebareportes","usuario","password");
JasperReportreporte=(JasperReport)JRLoader.loadObject("reporte1.jasper");JasperPrintjasperPrint=JasperFillManager.fillReport(reporte,null,conexion);
JRExporterexporter=newJRPdfExporter();exporter.setParameter(JRExporterParameter.JASPER_PRINT,jasperPrint);exporter.setParameter(JRExporterParameter.OUTPUT_FILE,newjava.io.File("reportePDF.pdf"));exporter.exportReport();}}
Esperoqueestepost,aunquealgolargo,lesseademuchautilidad.EllospostsiguientesampliarunpocolaformaenlaqueesposibletrabajarconJasperRepots.
Noolvidendejarsusdudas,comentariosysugerencias.
Saludos.
Descargalosarchivosdeestetutorialdesdeaqu:
ReporteconConexinaBasedeDatos
EntradasRelacionadas:
Parte2:UsandoDataSourcesPersonalizadosParte3:ParmetrosyVariablesParte4:ReportesenaplicacioneswebParte5:GrficasenReportesParte6:GruposParte7:Subreportes
+25 Recomendar esto en Google
64comentarios:
Annimo 2demarzode2009,13:35
Locazoman,graciasporestainformacion.Ojalahubieramasgenteconganasdeensear...Sabestengounaduda,necesitocrearunreportedecronogramadepagos,losunicosparametrosenviadosalreportesonelMontodedesembolso,latasadeinteresyelperiodo.EnmiaplicacionSwingestologeneroconunfor,peronosecomohacerloenelireport.
Agradeceriacualquierayudadeantemano.
Responder
Annimo 5deabrilde2009,15:09
muybuenalaayuda,perotuveunproblemaalseguirtusecuencia,creeelreporteytodocorreperfecto,peroelnetbeansnoloabre,mesaleunerrorenestalinea
JasperReportreporte=(JasperReport)JRLoader.loadObject("reporte1.jasper")
simepodriasayudarasabermasoaqsedebeporfa
Responder
ProgramadorJava 5deabrilde2009,15:24
Claroquesi,peropodrasdarmemsinformacinsobreelerrorqueteda?.Noencuentraelarchivooalgoas?.Siesteeselcaso,debesrevisarenqudirectorioestascolocandolo.Debeestaralamismaalturaqueeldirectoriosrc,nbproject,test,build.xml,etc.