Vous êtes sur la page 1sur 6

14/4/2015

TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte5:GrficasenReportes
3

Ms Siguienteblog

TutorialesdeProgramacionJava
BlogdedicadoatemasdeprogramacinactualesusandoellenguajedeprogramacinJavaylasltimasversionesdesusAPIsyHerramientas.
Pginaprincipal

PginadeConcursos

TutorialesUPAO2010

PresentacionesCapacitacin

LUNES,13DEABRILDE2009

Creacin de Reportes con JasperRepots y iReports Parte 5: Grficas en


Reportes
Visitalaparte1deestetutorial:ReportesconConexinaBasesdeDatos
Visitalaparte2deestetutorial:UsandoDataSourcesPersonalizados
Visitalaparte3deestetutorial:ParmetrosyVariables
Visitalaparte4deestetutorial:Reportesenaplicacionesweb
Visitalaparte6deestetutorial:Grupos
Visitalaparte7deestetutorial:Subreportes
Algunasvecesesmsfcilentenderlainformacincuandosenospresentaenunaimagen.Enelcasodelosdatos,cuandoestamos
haciendocomparaciones,lomsfcilesvisualizarlosenunagrficadebarrasoenunagrficadepieopastel.Enestetutorialmostrar
cmopodemoscolocargrficasennuestrosreportesparahacercomparacionesdeunconjuntodedatos.

DONACIONES

JAVATUTORIALESENFACEBOOK

JavaTutoriales
Megusta

JavaTutorialesha
aadidounafotonueva.
13demarzo

Para este ejemplo los datos que graficaremos son las ventas de consolas de ltima generacin (Wii, XBox360, y PS3). Tomaremos
estosdatosdeVGChartzque,aunquenosoncifrasoficiales,mantienesusdatosactualizados.Enelmomentodeescribirestetutorial
lasventasvan:
Wii:48.79%paranosotrosser49%
XBox360:29.63%paranosotrosser30%
PS3:21.57%paranosotrosser21%
Nota: Recientemente han aparecido las versiones 3.5 de JasperReports y iReports, por lo que comenzar a usarlos a partir de este tutorial. La
configuracindelabibliotecaJasperReportsquecreamosenestetutorialyelusodeiReportparaloquehemoshechohastaahoraesigual,porloque

16MegustaSehacompartido1vez

todoloquehemoshechoservir.

Bien,paracomenzarcrearemosunnuevoproyectoJavastandaloneenNetBeans(File>NewProject...>Java>Java
Application),leasignamosunnombre(queenmicasoserReporteGrafica)ypresionamoselbotn"Finish"paraqueelnuevo
proyectosegenereyveamoseneleditornuestraclaseMain.

Megusta

Comentar

A24386personaslesgustaJavaTutoriales

Agregamosalnodo"Libraries"denuestroproyectolabiblioteca"JasperReports"quecreamosenlaprimerpartedeltutorialyeljar
"commonslogging1.1.1.jar",comolohemosvenidohaciendohastaahora.
Adicionalmente debemos agregar dos jars ms que nos permitirn generar las grficas. Puesto que JasperReports hace uso de
JFreeChartparagenerarlasgrficasdebemosagregardosdesusjars:jfreechart.jar y jcommon.jar. Si bajaron JasperReports
en el archivo .zip que contiene las bibliotecas de soporte entonces ya tienen estos jars (que se encuentran en el directorio lib del .zip
anterior),solodebenagregarlosalnodo"Libraries"delproyecto.
Ahoranecesitamos,comoenloscasosanteriores,unaclasecuyasinstanciasmantendrnlosdatosquemostraremosenelreporte.En
estecaso,comoestamoshablandodeconsolas,creoquelomsadecuadoesqueestaseaunaclase"Jugador".Asqueagreguemos
estaclaseanuestroproyecto.

PluginsocialdeFacebook

Estaclasetendrtansolotresatributos:unid(queenestecasopodranosernecesario,peroesparanoperderlacostumbre,cuando
veamos algo de Hibernate veremos que es mejor acostumbrarnos desde el prinicpio a poner este id), un nombre para distinguir al
usuario,yelnombredelaconsolaquetiene(queeseldatoquenosinteresaparacrearlagrfica).
ElcdigodelaclaseJugadorquedadelasiguienteforma:

publicclassJugador
{
privateintid
privateStringnombre
privateStringconsola
publicJugador(intid,Stringnombre,Stringconsola)
{
this.id=id
this.nombre=nombre
this.consola=consola
}

http://www.javatutoriales.com/2009/04/creaciondereportesconjasperrepotsy_13.html

1/12

14/4/2015

TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte5:GrficasenReportes
publicStringgetConsola()
{
returnconsola
}
publicvoidsetConsola(Stringconsola)
{
this.consola=consola
}
publicintgetId()
{
returnid
}
publicvoidsetId(intid)
{
this.id=id
}

publicStringgetNombre()
{
returnnombre
}
publicvoidsetNombre(Stringnombre)
{
this.nombre=nombre
}
}
ElcdigodelaclaseMaineselcdigoestandarquehemosestadousandoenestaseriedetutorialesdeJasperReports,conexcepcin
delaparteenlaquesecreanlosJugadores.Enestecasousaremostresciclos,unoparacadaconsola.Porloqueestapartedelcdigo
quedamsomenosas(listaJugadoresesunalistadeobjetosJugador):
SEGUIDORES

for(inti=1i<=49i++)
{
listaJugadores.add(newJugador(i,"Jugador"+i,"Wii"))
}

Participarenestesitio
GoogleFriendConnect

Miembros(195) Ms

for(inti=50i<=79i++)
{
listaJugadores.add(newJugador(i,"Jugador"+i,"XBox"))
}
for(inti=80i<=100i++)
{
listaJugadores.add(newJugador(i,"Jugador"+i,"PS3"))
}
AhoraabriremoseliReportycomenzaremosconeldiseodenuestroreporte.ElnuevoiReport(3.5.0)muestralosmensenelmismo
idiomaquenuestrosistemaoperativo,queenmicasoesespaol,porloqueapartirdeahoracolocarlosnombresdelasopcionesylos
mensenespaol(enelcasoenelquelosmuestreas,sialgunosemuestraeninglscolocarelnombreeningls).

Yaeresmiembro?Iniciarsesin

ARCHIVODELBLOG

2015(1)
2013(1)

CreamosunnuevoreportevaciollendoalmenArchivo>New...>EmptyReport.Enlaventanaqueseabrecolocamosel
nombredenuestroreporte(reporteGrafica.jrxml)yloguardamoseneldirectoriorazdenuestroproyectodeNetBeans:

2012(2)
2011(11)
2010(10)
2009(22)
septiembre(2)
agosto(2)

Comencemoscolocandounttuloylosencabezadosdenuestrascolumnasdedatosusandotextosestticos,ascomolosfieldspara
losdatosqueobtendremosdecadaunodelosobjetosJugador(id,nombre,yconsola) de la misma forma que lo hicimos en este
tutorial(noolvidenguardardeformaconstantesusavancesparanoperdersutrabajo):

julio(1)
junio(3)
mayo(2)
abril(5)

InstalacindeunServidordeDesar
Parte1...

CreacindeReportesconJasperRe
yiReports...

CreacindeReportesconJasperRe
yiReports...

CreacindeReportesconJasperRe
yiReports...

Ahora vienen los pasos interesantes. Primero debemos crear un grupo. Un grupo nos permite tratar de forma especial un conjunto de
datos que se encuentran asociados (es como un groupby en SQL). Adems, al crear un grupo se genera tambin una variable que
mantieneelconteodeloselementosdecadagrupo(comosihicieramosuncountsobreloselementosdelosgruposenSQL).

CreacindeReportesconJasperRe
yiReports...
marzo(2)
febrero(2)

http://www.javatutoriales.com/2009/04/creaciondereportesconjasperrepotsy_13.html

2/12

14/4/2015

TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte5:GrficasenReportes
Enestecasoelgrupoquenosinteresaeseldelasconsolas.
Si estuvieramos usando consultas SQL obtener estos datos sera sencillo. Es ms, si hubieramos creado nuestro reporte usando el
"ReportWizard" podramos haber creado el grupo que nos interesa desde ahi. Pero como estamos usando un DataSource propio,
tenemosqueagregarelgrupoamano.AfortunadamenteesmuysencilloagregargruposdesdeiReport.Lonicoquedebemoshaceres
clickderechosobreelnodo"reportname" (la raz de los elementos del proyecto) en el panel "ReportInspector". Con esto se
abrirunmencontextual.Deesteseleccionamoselelemento"AddReportGroup":

enero(3)

Academia
de
Informtica
Multitud de
Cursos IT
Online. Desde
la Comodidad
de tu Casa!

Alhacerestoseabrirlaventanadel"GroupWizard".Enestacolocamoselnombredelgrupo,enestecasoserCONSOLAS,yenel
campo "Group by the following report object:" seleccionamos el field "consola" que creamos anteriormente. Con esto
conseguiremosqueelnuevogrupoquesecrearsehagaconrespectoalvalordelatributo"cosola"denuestrosobjeto"Jugador".

DATOSPERSONALES

Alex

Presionamoselbotn"Siguiente>"ysenosmostrarndosradiobuttonspreguntandosiquieremosagregarlacabecera(header)yel
pie de pagina (footer) del grupo. Nosotros deseleccionamos estas opciones (se encuentran seleccionadas por default) ya que no nos
interesaagregarningunodeestoselementos.Paraterminarpresionamoselbotn"Finalizar"yyatendremosagregadonuestrogrupo
^^.

Programador Java con algunos ao


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

No es muy obvio el que este grupo existe, de hecho los unicos indicadores que tenemos son que se han agregado en la zona de las
bandasdel"ReportInspector"dosnuevasbandas:"CONSOLASGroupHeader"y"CONSOLASGroupFooter", adems se ha
agregado una variable llamada "CONSOLAS_COUNT", que es la variable que nos interesa y por la que hemos creado el grupo, que
mantendrelnmerodejugadoresquetienencadaunadelasconsolas:

Ahoraagregaremosnuestragrfica.ParaesoarrastraremosdesdelaPaletadeelementosdelreporteun"Chart"ylocolocamosenla
banda"Summary"(ajusteneltamaodelabandaparaquelagrficaseveabien).

http://www.javatutoriales.com/2009/04/creaciondereportesconjasperrepotsy_13.html

3/12

14/4/2015

TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte5:GrficasenReportes

Alarrastrarlagrficaseabrirunanuevaventanapreguntndonosqutipodegrficoqueremosmostrar.Enestecasoseleccionaremos
elgrficodepieodepastel(laprimerosegundaopcin):

Presionamoselbotn"OK"ylagrficaseagregaranuestroreporte,ajustenlaparaqueabarquetodaelreadelabanda.

Lo ltimo que haremos es configurar la grfica para que obtenga los datos de los campos y variables que nos interesa mostrar. Para
esto,hacemosclickderechosobrelagrfica,conloqueseabrirunmencontextual.Enestemenseleccionamoslaopcin"Chart
Data".

Conloqueseabrirunanuevaventana,yenestaventanaseleccionamoslapestaa"Details".Enestapestaaconfiguraremostres
valores:
Keyexpression
Valueexpression
Labelexpression
Nota: Dependiendo del tipo de grfica que estemos haciendo puede que debamos agregar ms valores, pero para los grficos de pie solo son
necesariosestos.

La"Keyexpression"diceculserlabasequeseusarparacadaunodelaspiezasdelagrfica.Ennuestrocasoqueremosque
cadatrozomuestrelasconsolas.Porloquecolocamoscomovalor$F{consola}.

http://www.javatutoriales.com/2009/04/creaciondereportesconjasperrepotsy_13.html

4/12

14/4/2015

TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte5:GrficasenReportes
La "Valueexpression" dice cul ser el tamao de cada una de las piezas de la grfica. Nosotros queremos que cada pieza sea
equivalentealnmerodeconsolasquesehancomprado.Porloquecolocamoscomovalor$V{CONSOLAS_COUNT}.
Labelexpressioneslaetiquetaquesemostrarparacadavalor.Nosotrosqueremosmostrarelnombredelaconsolajuntoconel
nmero de unidades que se han vendido de cada una. Por lo que colocamos como valor $F{consola} + " " +
$V{CONSOLAS_COUNT}.Locualcolocarcomovalorelnombredelaconsola,concatenndoleelsigno""yconcatenndoleelnmero
deconsolasvendidas(elnmerodejugadoresquehancompradocadaunadelasconsolas).
Estaventanaquedadelasiguienteforma:

Presionamoselbotn"Close"yhemosterminadoconnuestroreporte.Cambiamosalavista"Preview"paracompilarelreporte.Nose
nosmostrarnadadelreportefinal.Dehecholosregresaralavistadel"Designer"ymostrarunaexcepcinenlaventanadesalida
indicandoalgoas:"Keyisnullinpiedataset".Estoesnormalyaquelagrficanopuedegenerarseyaquenoexistendatos.
Loimportanteesquesehayageneradoelarchivo"reporteGrafica.jasper".
Ahoraejecutamosnuestraaplicacin,conloquedebegenerarsenuestroreporteenPDFydebemosver,alfinaldelreporte,lasiguiente
grfica:

Conloquecomprobamoslagrficasehacreadocorrectamente^^.
FinalmenteesteeselcodigodelaclaseMain(omitiendolosimports):

publicclassMain
{
publicstaticvoidmain(String[]args)throwsException
{
ListlistaJugadores=newArrayList()
for(inti=1i<=49i++)
{
listaJugadores.add(newJugador(i,"Jugador"+i,"Wii"))
}
for(inti=50i<=79i++)
{
listaJugadores.add(newJugador(i,"Jugador"+i,"XBox"))
}
for(inti=80i<=100i++)
{
listaJugadores.add(newJugador(i,"Jugador"+i,"PS3"))
}
JasperReportreporte=(JasperReport)JRLoader.loadObject("reporteGrafica.jasper")
JasperPrintjasperPrint=JasperFillManager.fillReport(reporte,null,newJRBeanCollectionDa
taSource(listaJugadores))

http://www.javatutoriales.com/2009/04/creaciondereportesconjasperrepotsy_13.html

5/12

14/4/2015

TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte5:GrficasenReportes
JRExporterexporter=newJRPdfExporter()
exporter.setParameter(JRExporterParameter.JASPER_PRINT,jasperPrint)
exporter.setParameter(JRExporterParameter.OUTPUT_FILE,newFile("reportegrafica.pdf"))

exporter.exportReport()
}
}

Bueno,esperoquelesseadeutilidad.Noolvidendejarsuscomentarios,dudasysugerencias.
Saludosygracias.
Visitalaparte1deestetutorial:ReportesconConexinaBasesdeDatos
Visitalaparte2deestetutorial:UsandoDataSourcesPersonalizados
Visitalaparte3deestetutorial:ParmetrosyVariables
Visitalaparte4deestetutorial:Reportesenaplicacionesweb
Visitalaparte6deestetutorial:Grupos
Visitalaparte7deestetutorial:Subreportes
PublicadoporAlexen17:11

divertido (0)

Reacciones:

interesante (0)

increible (0)

no me gusta (0)

+3 Recomendar esto en Google


Etiquetas:graficos,ireports,jasperreports,java,pie,reportes

44comentarios:
Annimo 5demayode2009,7:03
Hola,tengounproblemaalintentarmostrarunganttChartenlaweb.Tecuento,herealizadomuchosreportes,todobien,contomcat6.0,
ireport3.1yjasperreport3.1.3...Pero,elganttlopintabienenireport,peroalcargarlaaplicacionwebentoncesmedaelsiguienteerror
ElementganttChartnodefined.
Qpuedohacer??
Responder

ProgramadorJava 5demayode2009,7:08
Hola
SegunlosforosdeJasperReportsparecequehayproblemasconlaganttCharenalgunossistemasoperativosyconalgunasversiones
anterioresdeJasperReports(poralgunaraznquedesconozco).PorqunopruebasactualizaralaltimaversintantodeiReporcomo
deJasperReport?
Saludos.
Responder

michael_demonio 22dejuniode2009,22:13
Hola, estoy intentando insertar un grfico y no puedo, me sale un error de compilacin lo que pretendo es mostrar en un grfico, la
cantidaddepersonasquesonestudiantes,profesores,prospectoseinteresadosdedeterminadainstitucineducativa.
Esperokemepuedanayudar
muchasgraciasdeantemano
Responder

Alex

23dejuniode2009,6:55

Hola,podrasdecirmequeerroreselquetesaleytalvezponerpartedelcdigoqueestasusandoyplaticarunpocodeloqueestas
haciendoeneliReport?
Saludos

http://www.javatutoriales.com/2009/04/creaciondereportesconjasperrepotsy_13.html

6/12

Vous aimerez peut-être aussi