Sunteți pe pagina 1din 13

14/4/2015

TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte1:ReportesconConexinaBasedeDatos
25

Ms Siguienteblog

TutorialesdeProgramacionJava
BlogdedicadoatemasdeprogramacinactualesusandoellenguajedeprogramacinJavaylasltimasversionesdesusAPIsyHerramientas.
Pginaprincipal

PginadeConcursos

TutorialesUPAO2010

PresentacionesCapacitacin

DOMINGO,8DEFEBRERODE2009

CreacindeReportesconJasperRepotsyiReportsParte1:Reportescon
ConexinaBasedeDatos

DONACIONES

EnunpostanteriorhablunpocodelasventajasquetenemosalcrearreportesconelAPIJasperReportsylaherramientaiReport.
Ahora veremos unos ejemplos de cmo usarlos en nuestras aplicaciones Java. Dividir estos ejemplos en varios post dedicando cada
unoaunaformamuyparticulardelacreacindereportes.

JAVATUTORIALESENFACEBOOK

JavaTutoriales

Paraestosejemplosusaremoslasltimasversionesdeambasherramientas(queenestaactualizacinsonlas3.7.6)
LoprimeroqueharemosesbajarelJasperReportsyiReport.Esteltimolousaremosensufacetadeaplicacinstandaloneyno
comopluginparaNetBeans.EstoporaquellosquenoslesgusteusarelNetBeans.
Comoyahabadicho:LaltimaversindeiReportestbasadaenlaplataformadeNetBeansporloque,comopuedenobservarenla
imagensiguiente,lasinterfacesdeambossonmuyparecidas.

Megusta

JavaTutorialesha
aadidounafotonueva.
13demarzo

16MegustaSehacompartido1vez

Megusta

Enesteprimerpostveremoscmocrearreporteshaciendousodeunaconexinalabasededatosdirectamentedesdenuestroreporte.

Comentar

A24385personaslesgustaJavaTutoriales

Loprimeroqueharemosescrearunabasededatoscontablasydatosdepruebasparapoderteneralgointeresantequeverennuestros
reportes.EnestecasousarMySQLversin5.1,elcualpuedendescargardesdesupginaoficial.UsandoelconectorparaJavaversin
5.1.13 que pueden descargar desde la pgina de MySQL. Pero cualquier base de datos que les guste funcionar para nuestros
ejemplos.
Labasededatosqueusarsellama"pruebaReportes"ycontienelatabla"participantes".Esteeselscriptparalacreacinde
estatabla:

PluginsocialdeFacebook

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:

http://www.javatutoriales.com/2009/02/creaciondereportesconjasperrepotsy.html

1/29

14/4/2015

TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte1:ReportesconConexinaBasedeDatos

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 tenemos nuestros datos crearemos un "datasource" en iReport para poder acceder a nuestros datos y hacer pruebas
directamente, sin necesidad de una aplicacin Java (por el momento). Para crear este datasource hacemos clic en el cono "Report
Datasources"ubicadoenlabarradeherramientasdeiReport:

SEGUIDORES

Participarenestesitio
GoogleFriendConnect

Miembros(195) Ms

Con lo que se abrir la ventana de "Connections / Datasources" que en este momento debe contener solo un "Empty
datasource"ylaconexinaunabasededatosdepruebaenHSQLDB.Ahorahacemosclicenelbotn"New"paracrearnuestronuevo
datasource.

Yaeresmiembro?Iniciarsesin

ARCHIVODELBLOG

2015(1)
2013(1)
2012(2)
2011(11)
2010(10)
2009(22)
septiembre(2)
agosto(2)
julio(1)
junio(3)
mayo(2)

En la nueva ventana que se abre seleccionamos "Database JDBC connection" y presionamos el botn "Next". En la siguiente
ventanadebemosproporcionaralgunosdatoscomoelnombreseledaraldatasourceylosdatospararealizarlaconexindelabasede
datos. Despus de llenar estos datos su ventana debe haber quedado ms o menos como la siguiente (recuerden usar el "JDBC
Driver"quecorrespondaalmanejadordebasededatosqueestnusando:

abril(5)
marzo(2)
febrero(2)

CreacindeReportesconJasperRe
yiReports...

InstalacindePluginsenNetBeans
enero(3)

http://www.javatutoriales.com/2009/02/creaciondereportesconjasperrepotsy.html

2/29

14/4/2015

TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte1:ReportesconConexinaBasedeDatos

Antesdeguardarestaconfiguracinhaganclicenelbotn"Test"paraprobarquetodoslosdatosproporcionadossoncorrectos.Sitodo
ha salido bien, al hacer clic en el botn "Save" la ventana actual debe cerrarse y nuestro datasource debe estar ahora en la ventana
"Connections/Datasources".

DATOSPERSONALES

Alex

Programador Java con algunos ao


experiencia en mltiples poyectos y
mltiples APIs y herramientas deseos
compartir experiencias con el rest
programadores.
Vertodomiperfil

Ahorapasaremosacrearnuestronuevoreporte.Estaserlaprimerynicaocasinenlaqueharemosusodel"ReportWizard" para
ayudarnosagenerarelreporte.Paraestovamosalmen"File>New...".Conestoseabrirlaventanade"NewFile"enlaque
seleccionaremos el formato de nuestro reporte. En mi caso seleccionar la plantilla "Wood" aunque pueden seleccionar la que ustedes
deseen,yhacemosclicenelbotn"LaunchReportWizard"

Estewizardnosayudaracrearunreporte100%funcionalen6pasos(enrealidad5yaqueempezamosdirectamenteenelpaso2)que
podremosverdesdeelmismoiReportsinnecesidaddeescribirunasololneadecdigoJava.Estos7pasosson:

1. Seleccindelaubicacinenlaqueseguardarnuestroreporte.
2. Seleccindeldatasourceeintroduccindelqueryparaobtenerlosdatosquenosinteresan.
3. Seleccindelosdatosquequeremosmostrarenelreporte.
4. Creacindegruposparaelreporte(seexplicarenunpostposterior).
5. Seleccindellayoutoacomododelosdatosenelreporte
6. Felicitacinportenerminarnuestroreporte=D.

Lospasosinteresantessonel3yel4,asqueserenestosenlosquenosenfocaremosms.

http://www.javatutoriales.com/2009/02/creaciondereportesconjasperrepotsy.html

3/29

14/4/2015

TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte1:ReportesconConexinaBasedeDatos
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",yesundocumentoxml
quecontienelosdatosparagenerarunarchivocompilado(".jasper")queeselqueusaremosprincipalmenteennuestrasaplicacionesJava(aunque
tambinpodriamosoptarporcompilarnuestroarchivo".jrxml"desdelamismaaplicacinJavayasgenerarelarchivo".jasper"correspondiente).

Enestemomentonoimportamuchoendondeguardemoselarchivoquesegenerar,yaqueposteriormentetendremosquemoverlopara
quenuestraaplicacinjavapuedaencontrarlo.Pormipartellamaralarchivo"reporte1".
Hacemosclicenelbotn"Next"paracontinuarconelpaso3.Enestepasodebemosseleccionareldatasourcedesdeelquelosdatos
del reporte sern tomados. Por default est seleccionado el "Empty datasource". As que nosotros seleccionamos el datasource
"ConexionMySQLPruebas"(eldatasourcequecreamosanteriormente).
Alhacerelcambiodeldatasourceveremosqueapareceuntextareaconelttulo"Query(SQL)"yenlaparteinferiordebemostenerun
mensajedeerrorquedice"Invalidquery".

Esto ocurre porque, efectivamente, en el textarea no tenemos una consulta vlida (de hecho no tenemos ninguna). Por lo que ahora
corregiremoseso.Paraestotenemos3opciones:

1. Escribirunaconsultanosotrosmismosdeformadirecta.
2. Cargarunaconsultaquetengamosguardadaenalgnarchivo.sqlo.txt.
3. Crearunaconsultausandoel"diseadordeconsultas".

Nosotrosharemosusodeldiseadordeconsultas.Hacemosclicenelbotn"Designquery"conloqueseabrirunanuevaventana
queestdivididaentressecciones.

Laprimerseccinesladelaestructuradelaconsulta.Aqubsicamentepodremoscambiarentrelassentenciasqueestamoseditando
(SELECT,WHERE,ORDERBY,etc.).Lasegundaseccinesladeloselementosdenuestrabasededatos(tablas,vistas,ytemporales
locales).Aqupodremosseleccionarloselementosdelosquequeremosobtenerdatosparalaconsulta.Finalmentelatercerseccinnos
muestraloselementosquehemosseleccionadodelasegundaseccinparaquepodamosseleccionarlosdatosaobtener.
Laconsultaqueharemosserparaobtenertodoslosdatosdelatabla"participantes",conexcepcindel"ID".Paraestohacemos
dobleclicsobreelnombredelatabla"participantes"enlasegundaseccindelaventanaquetenemosabierta.Conestoaparecer
en la tercer seccin otra ventana con el ttulo "participantes" y un conjunto de checkboxes, cada uno con un campo de nuestra
tabla.Paragenerarlaconsultaquenosinteresasolamenteseleccionamostodosloscheckboxes(conexcepcindel"ID")yveremosque
laconsultasegeneraenlaprimerseccin.Yasolodamosclicenelbotn"OK".

http://www.javatutoriales.com/2009/02/creaciondereportesconjasperrepotsy.html

4/29

14/4/2015

TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte1:ReportesconConexinaBasedeDatos

Conestoyatendremosnuestraconsultaeneltextareacorrespondienteypodemoscontinuarconelpaso4,paraloquehacemosclicen
elbotn"Next".
En este paso solo tenemos que seleccionar cules campos del query generado en el paso anterior queremos que se muestren en el
reporte.Comonosotrosqueremosquesemuestrentodospasamostodosloscamposdelladoizquierdoalladoderechoyhacemosclic
enelbotn"Next".

Ahoraenelpaso5debemosseleccionarcmoqueremosquelosdatosseanagrupados.Estoloexplicarenalgnotropost,peroporel
momentodejemostodoenblancoydemosclicenelbotn"Next".
Elltimopasoeselsolamenteunafelicitacinporhabercreadounnuevoreporte^^.

Ahorahacemosclicenelbotn"Finish"yyapodremosverlaplantilladenuestroreporte.

Siqueremosvercomoseverelreportefinal,enestecaso,podemosverunpreviewconlosdatosrealessicambiamosalavistade
"preview"enlaventanadeleditor.

http://www.javatutoriales.com/2009/02/creaciondereportesconjasperrepotsy.html

5/29

14/4/2015

TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte1:ReportesconConexinaBasedeDatos

Alhacerclicenlapestaade"preview",nuestroreportesecompilarysemostrar.Enestecasoelreportepuedeserprevisualizado
porquelassiguientescondicionessecumplen:
Tenemosunabasededatospoblada(estoesmuyimportante,yaquesinotienedatosobtendremosunmensajedeerror).
Tenemosundatasourceconfiguradoparaestabasededatos.
Nuestroreportehaceunaconsultadirectaaestabasededatosatravsdeldatasourceanterior.
Elreporteestpreparadoparamostrarlosdatosrecuperadosanteriormente.
Comoveremosenlossiguientesposts,podraserquenotodasestascondicionessecumplanalmismotiempo,porloquetendremos
problemasparaverlosdatosenelpreviewdelreporte.
Algoimportantequeocurrealhacerestepreviewesqueelreportesecompilagenerandoelarchivo"reporte1.jasper"elcualesel
archivoqueusaremosdesdelaaplicacinJavaquecrearemosenunmomento.
Siqueremoscompilarnuestroreportedeformamanualpodemoshacerclicenelbotn"CompileReport"delavistadediseo:

Haremosalgunasmodificacionesparaqueestereporteseveaunpocomejor:primerocambiaremoselttuloquedice"WoodTitle" por
"ReportedeParticipantes",cambiamoselcolordetextoanegro,yeliminamoselfondoyelsubtituloquetiene.
Adems cambiamos el ttulo de cada una de las columnas por algo ms claro. Por ejemplo, podemos cambiar el ttulo de la columna
"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 una
aplicacinJava.
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.Existeotrotipo
dedatoqueseusallamadopropiedades($P{propiedad}).Comotodoestofuecolocadoporelwizardnoloexplicarhastaelsiguientepost,por
ahorasoloconfenenquedebenestarah.

Lo primero que haremos es crear un nuevo proyecto en NetBeans. Para esto vamos al men "File > new Project...". En la
ventana de nuevos proyectos seleccionamos la categora "Java" y de tipo de proyecto seleccionamos "Java Application" y
hacemosclicenelbotn"Next".Enlasiguienteventanaintroducimoselnombredenuestroproyectoydejamosseleccionadalaopcin

http://www.javatutoriales.com/2009/02/creaciondereportesconjasperrepotsy.html

6/29

14/4/2015

TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte1:ReportesconConexinaBasedeDatos
"CreateMainClass"y"SetasMainProject".

Hacemos clic en el botn "Finish" para que nuestro proyecto se genere. Lo que haremos a continuacin es crear una biblioteca que
contengalosarchivosjarsbsicosnecesariosdeJasperReports.Deestaformanotendremosqueagregarcadaunodelosjarscadavez
quenecesitemosusarJasperReportsenunproyecto.AdemssiactualizamoslaversindelAPIqueusamos,solodebemosactualizar
estabiblioteca.
Paracrearnuestrabibliotecavamosalmen"Tools>Libraries":

Conestoseabrirlaventanadel"LibraryManager".Enestaventanahacemosclicenelbotn"NewLibrary":

Enlaventanaqueseabreescribimoselnombredelanuevabiblioteca(enmicasoser"JasperReports")yeneltipodelabiblioteca
seleccionamoslaopcin"ClassLibraries".

Alhacerclicenelbotn"OK"regresaremosal"LibraryManager" y tendremos nuestra nueva biblioteca creada. Pero an nos hace


falta agregar los archivos jars que conformarn esta biblioteca. Nos aseguramos que la pestaa "Classpath" est seleccionada y
hacemosclicenelbotn"AddJar/Folder"situadoaladerecha.Seabriruncuadrodedialogoparaqueseleccionemoslosjarsque
queremosagregar.

http://www.javatutoriales.com/2009/02/creaciondereportesconjasperrepotsy.html

7/29

14/4/2015

TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte1:ReportesconConexinaBasedeDatos

Navegamos hasta el directorio en el que tenemos los jars de JasperReports que bajamos anteriormente. Para que los ejemplos que
haremosmsadelante(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 que
bajamosanteriormente.
Hacemosclicenelbotn"AddJar/Folder"yconestotendremoslistanuestrabiblioteca"JasperReports"paraagregarlaanuestro
proyecto.

Hacemosclicenelbotn"OK"pararegresaralambientedetrabajo.
Ahora hacemos clic derecho en el nodo "Libraries" de la ventana "Projects". Con esto se abrir un men contextual con 4
opciones,seleccionamoslaopcin"AddLibrary..."

http://www.javatutoriales.com/2009/02/creaciondereportesconjasperrepotsy.html

8/29

14/4/2015

TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte1:ReportesconConexinaBasedeDatos

Enlaventanaqueseabreseleccionamoslabibliotecaquecreamosanteriormente("JasperReports")yhacemosclicenelbotn"Add
Library".Alhacerestoveremosseagregaralnodo"Libraries"denuestroproyectotodoslosjarsquetienenuestrabiblioteca.
Nota:Sinocrearonlabibliotecacomoseindicaenpasosanteriorespuedenagregarcadaunodelosjarsmanualmenteseleccionandolaopcin"Add
JAR/Folder..."delmencontextual

Recuerdan que cuando vimos el preview del reporte que creamos en iReports se gener un archivo "reporte1.jasper"?
TomamosestearchivoylocolocamoseneldirectoriorazdelproyectodeNetBeansqueacabamosdecrear(larazdelproyectoesel
directorioenelqueseencuentranlossubdirectorios"nbproject","src",entreotros).

Ahoraveremoselcdigoparagenerarelreporteenvariosformatos.
Lo primero es crear una conexin a la base de datos que creamos anteriormente. Si no saben cmo crear una conexin JDBC desde
Java,puedenveresteartculo.Sirecuerdannuestrabasededatossellama"pruebareportes". Por lo que el cdigo para generar la
conexinenelsiguiente:

Class.forName("com.mysql.jdbc.Driver");
Connectionconexion=DriverManager.getConnection("jdbc:mysql://localhost:3306/pruebareportes","usuario","
password");

Nota:NoolvidenagregareljardeldriverdeMySQLquebajamosanteriormente(mysqlconnectorjava5.1.13bin.jar) al proyecto al nodo


"Libraries"delaventana"Project"usandolaopcin"AddJAR/Folder"otambinpuedenagregarlabiblioteca"MySQLJDBCDriver"queya
traeincluidoelNetBeans,delamismaformaqueagregamosladeJasperReports.

Seguramente en este momento el NetBeans les est marcando un error en estas dos lneas que hemos agregado. Esto es porque al
tratar 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". Para solucionar esto pueden hacer dos cosas. La primera es rodear estas lneas (y las siguientes que
crearemos)enunaclausulatry/catch.Lasegundaopcin(laqueyousar)esagregarlaclausulathrowsExceptionenelmtodo

http://www.javatutoriales.com/2009/02/creaciondereportesconjasperrepotsy.html

9/29

14/4/2015

TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte1:ReportesconConexinaBasedeDatos
main:

publicstaticvoidmain(String[]args)throwsException
{
Class.forName("com.mysql.jdbc.Driver");
Connectionconexion=DriverManager.getConnection("jdbc:mysql://localhost:3306/pruebareportes","roo
t","123");
}

Pueden probar que la conexin se realiza correctamente presionando F6 o haciendo clic en el botn "Run Main Project". Si la
conexinserealizacorrectamenteveremoselmensaje

run:
BUILDSUCCESSFUL(totaltime:0second)

Enlaventana"Output".Delocontrariovernelerrorelenstacktracedelaexcepcinqueselanz.Unavezquelaconexinserealice
exitosamentepodremosproseguirconlospasosrestantes.
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.Silocolocaronenotra
ubicacinsernecesarioquepasencomoparmetroalmtodo"loadObject"laurlabsolutaenlaqueseencuentrelarchivo.

Ahoraelobjeto"reporte"contieneladefinicindelreporte,peroanhacefaltaquellenemosestereporteconlosdatosqueobtendrde
labasededatos.Paraestousamoslaclase"net.sf.jasperreports.engine.JasperFillManager".Estaclasetieneunmtodo
esttico,"fillReport",quenospermitellenarelreportecondatosobtenidosdedistintasfuentesdedatos(unadeestasfuentesesla
sentenciaSQLqueescribimosalgenerarelreporteconelwizardeniReportsylaconexinqueusaremosenunmomento,veremos
quotrasfuentesdedatosexistenycmousarlosenlossiguientesposts).Enestecasolafuentededatoseslaconexindirectaala
basededatosquecreamosanteriormente(elobjetoconexion):

JasperPrintjasperPrint=JasperFillManager.fillReport(reporte,null,conexion);

Pasamos"null"comosegundoparmetroporquenoestamospasandoningnparmetroalreporte(estotambinloveremosdespus).
Elobjeto"JasperPrint"queobtenemoscomoresultadodelainvocacindelmtodo"fillReport" es la representacin de nuestro
reporte(ahoracondatos)quepodemosmandaraimprimir,mostrarenpantalla(siestamosusandounaaplicacinswingoawt),o,como
enestecaso,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", el
cualesuncomponenteswing,yagregaresteltimoaunpanel.
Para guardar este reporte a un archivo debemos usar un "net.sf.jasperreports.engine.JRExporter".
"net.sf.jasperreports.engine.JRExporter"esunainterface,ylasclasesquelaimplementannospermitengenerarelreporte
endistintosformatosdeunaformasencilla.Veremoscmogenerarlosreportesenlossiguientesformatos:
PDF
HTML
CSV
RTF

http://www.javatutoriales.com/2009/02/creaciondereportesconjasperrepotsy.html

10/29

14/4/2015

TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte1:ReportesconConexinaBasedeDatos
TXT
XLS
XML
XLSX
DOCX
PPTX
Entremuchosotros.
Primerodeclaramosunareferenciaaunobjetodetipo"JRExporter"delasiguienteforma:

JRExporterexporter=

Serestareferencialaqueusaremosdeahoraenadelante.ParaquenuestroreporteseaguardadoenformatoPDFcreamosunobjeto
detipo"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();
Laprimerlneaasignaanuestroobjeto"exporter" el "jasperPrint" (el reporte con datos) que creamos anteriormente. La segunda
lnea le dice al "exporter" cul ser el nombre del archivo generado (en este caso "reportePDF.pdf"). Recuerden cambiar el
nombreylaextensindelarchivocadavezquecambiemosdeformato.
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:

http://www.javatutoriales.com/2009/02/creaciondereportesconjasperrepotsy.html

11/29

14/4/2015

TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte1:ReportesconConexinaBasedeDatos

JRExporterexporter=newJRPdfExporter();

por

JRExporterexporter=newJRHtmlExporter();

y el nombre del archivo de "reportePDF.pdf" a "reporteHTML.html". Al ejecutar nuevamente nuestra aplicacin tendremos
veremosquesegeneraelarchivo"reporteHTML.html"eneldirectoriorazdelaaplicacin:

Conelsiguientecontenido:

Comopudimosver,conunpardemodificacionespudimoshacerquenuestroreportesegeneraraenunformatocompletamentedistinto.
Conelrestodelosformatosesigualdesimple.Usamoslassiguientesclasesparagenerarlosreportesenlossiguientesformatos:
PDF:net.sf.jasperreports.engine.exportJRPdfExporter
HTML:net.sf.jasperreports.engine.exportJRHtmlExporter
CSV:net.sf.jasperreports.engine.exportJRCsvExporter
RTF:net.sf.jasperreports.engine.exportJRRtfExporter
XLS:net.sf.jasperreports.engine.exportJRXlsExporter
XML:net.sf.jasperreports.engine.exportJRXmlExporter
TXT:net.sf.jasperreports.engine.exportJRTextExporter
XLSX:net.sf.jasperreports.engine.export.ooxml.JRXlsxExporter
DOCX:net.sf.jasperreports.engine.export.ooxml.JRDocxExporter
PPTX:net.sf.jasperreports.engine.export.ooxml.JRPptxExporter
Entremuchosotros^_^
Paragenerararchivos.txttendrnqueagregar,adems,estasdoslneas:

exporter.setParameter(JRTextExporterParameter.CHARACTER_WIDTH,12);//textexporter
exporter.setParameter(JRTextExporterParameter.CHARACTER_HEIGHT,12);//textexporter

Esteeselcdigodelaclase"Main":

http://www.javatutoriales.com/2009/02/creaciondereportesconjasperrepotsy.html

12/29

14/4/2015

TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte1:ReportesconConexinaBasedeDatos

publicclassMain
{
/**
*@paramargsargumentosrecibidosporlalineadecomandos
*/
publicstaticvoidmain(String[]args)throwsException
{
Class.forName("com.mysql.jdbc.Driver");
Connectionconexion=DriverManager.getConnection("jdbc:mysql://localhost:3306/pruebareportes","usu
ario","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.Ellospostsiguientesampliarunpocolaformaenlaqueesposible
trabajarconJasperRepots.
Noolvidendejarsusdudas,comentariosysugerencias.
Saludos.
Descargalosarchivosdeestetutorialdesdeaqu:
ReporteconConexinaBasedeDatos

EntradasRelacionadas:
Parte2:UsandoDataSourcesPersonalizados
Parte3:ParmetrosyVariables
Parte4:Reportesenaplicacionesweb
Parte5:GrficasenReportes
Parte6:Grupos
Parte7:Subreportes
PublicadoporAlexen18:34
Reacciones:

divertido (2)

interesante (8)

increible (2)

no me gusta (0)

+25 Recomendar esto en Google


Etiquetas:datasource,ireports,jasperreports,java,reportes

64comentarios:
Annimo 2demarzode2009,13:35
Locazoman,graciasporestainformacion.
Ojalahubieramasgenteconganasdeensear...
Sabestengounaduda,necesitocrearunreportedecronogramadepagos,losunicosparametrosenviadosalreportesonelMontode
desembolso,latasadeinteresyelperiodo.EnmiaplicacionSwingestologeneroconunfor,peronosecomohacerloenelireport.
Agradeceriacualquierayudadeantemano.
Responder

Annimo 5deabrilde2009,15:09
muybuenalaayuda,perotuveunproblemaalseguirtusecuencia,creeelreporteytodocorreperfecto,peroelnetbeansnoloabre,me
saleunerrorenestalinea
JasperReportreporte=(JasperReport)JRLoader.loadObject("reporte1.jasper")
simepodriasayudarasabermasoaqsedebeporfa
Responder

ProgramadorJava 5deabrilde2009,15:24
Claroquesi,peropodrasdarmemsinformacinsobreelerrorqueteda?.Noencuentraelarchivooalgoas?.Siesteeselcaso,
debesrevisarenqudirectorioestascolocandolo.Debeestaralamismaalturaqueeldirectoriosrc,nbproject,test,build.xml,etc.

http://www.javatutoriales.com/2009/02/creaciondereportesconjasperrepotsy.html

13/29

S-ar putea să vă placă și