tutoriales de programacion java_ creación de reportes con jasperrepots y ireports - parte 1_...

13
Blog dedicado a temas de programación actuales usando el lenguaje de programación Java y las últimas versiones de sus APIs y Herram Tutoriales de Programacion Java Página principal Página de Concursos Tutoriales UPAO 2010 Presentaciones Capacitación DOMINGO, 8 DE FEBRERO DE 2009 Creación de Reportes con JasperRepots y iReports Parte 1: Reportes con Conexión a Base de Datos En un post anterior hablé un poco de las ventajas que tenemos al crear reportes con el API JasperReports y la herramienta iReport. Ahora veremos unos ejemplos de cómo usarlos en nuestras aplicaciones Java. Dividiré estos ejemplos en varios post dedicando cada uno a una forma muy particular de la creación de reportes. Para estos ejemplos usaremos las últimas versiones de ambas herramientas (que en esta actualización son las 3.7.6) Lo primero que haremos es bajar el JasperReports y iReport. Este último lo usaremos en su faceta de aplicación standalone y no como plugin para NetBeans. Esto por aquellos que nos les guste usar el NetBeans. Como ya había dicho: La última versión de iReport está basada en la plataforma de NetBeans por lo que, como pueden observar en la imagen siguiente, las interfaces de ambos son muy parecidas. En este primer post veremos cómo crear reportes haciendo uso de una conexión a la base de datos directamente desde nuestro reporte. Lo primero que haremos es crear una base de datos con tablas y datos de pruebas para poder tener algo interesante que ver en nuestros reportes. En este caso usaré MySQL versión 5.1, el cual pueden descargar desde su página oficial. Usando el conector para Java versión 5.1.13 que pueden descargar desde la página de MySQL. Pero cualquier base de datos que les guste funcionará para nuestros ejemplos. La base de datos que usaré se llama "pruebaReportes" y contiene la tabla "participantes". Este es el script para la creación de esta tabla: CREATE TABLE 'participantes' ( 'ID' bigint(21) NOT NULL, 'NOMBRE' varchar(100) NOT NULL, 'USERNAME' varchar(100) NOT NULL, 'PASSWORD' varchar(100) NOT NULL, 'COMENTARIOS' varchar(100) default NULL, PRIMARY KEY ('ID') ) ENGINE=InnoDB DEFAULT CHARSET=latin1 Y este es el script para poblar la tabla anterior: DONACIONES JAVA TUTORIALES EN FACEBO Java Tutoriales A 24 385 personas les gusta Jav Plugin social de Facebook Me gusta Java Tutoriales añadido una foto 16 Me gusta · Se ha compartid Me gusta Comentar 13 de marzo 25 Más Siguiente blog»

Upload: ben-avraham

Post on 18-Dec-2015

221 views

Category:

Documents


8 download

DESCRIPTION

tip

TRANSCRIPT

  • 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.