Foros del Web » Programación para mayores de 30 ;) » Java »

Jasper Report + iReport + NetBeans 4

Estas en el tema de Jasper Report + iReport + NetBeans 4 en el foro de Java en Foros del Web. Para que el reporte no presente null si no blanco debes ir a las propiedades del elemento textField, a la viñeta "Text Field" y checar ...

  #181 (permalink)  
Antiguo 21/05/2005, 12:47
 
Fecha de Ingreso: abril-2005
Mensajes: 56
Antigüedad: 19 años
Puntos: 0
Campo null

Para que el reporte no presente null si no blanco debes ir a las propiedades del elemento textField, a la viñeta "Text Field" y checar donde dice "Blank when null"
Saludos
KirsonX
  #182 (permalink)  
Antiguo 24/05/2005, 07:52
 
Fecha de Ingreso: abril-2005
Ubicación: medellin colombia
Mensajes: 25
Antigüedad: 19 años
Puntos: 0
De acuerdo Generar reportes en Excel y Html


Hola a todos, necesito una gran ayuda, anteriormente ya habia generado mis preguntas pero no logro ninguna solución, tengo un pequeño problema y es que estoy generando mis reportes en excel y html, pero cuando los corro no me los deja visualizar.

Pasa lo siguiente ejecuto el jsp y me abre la sesion de excel pero no me lo muestra, esto pasa con un codigo y genere otro jsp pero el archivo me lo guarda en la ruta pero no me lo deja ver al igual que el otro y con el de html quisiera generarlo pero no colocando la ruta del internet explorer sino que me lo habra directamente en el browser. Estuve verificando todo el foro nuevamente y no encuentro la solución, estoy trabajndo con el codigo que da Destruktor pero no ha sido posible.

Si alguien tiene algun ejemplo de como lo puedo realizar se lo agredeceria muchisimo.
  #183 (permalink)  
Antiguo 24/05/2005, 08:06
Avatar de DestruKtor  
Fecha de Ingreso: marzo-2005
Mensajes: 95
Antigüedad: 19 años, 1 mes
Puntos: 4
De acuerdo Archivos EXCEL

Para todos lo que siguen preguntando por privado como exportar a Excel desde un JSP, la cosa es asi:

Código:
//Cargamos la definicion del reporte *.jasper
java.io.File reportFile = new java.io.File(JasperFilesSource + filejasper );
     
//cargamos parametros del reporte (si tiene).
Map parametros = new HashMap();
			 
//Generar XLS. 
//Preparacion del reporte (en esta etapa se inserta el valor del query en el reporte).

JasperPrint jasperPrint=JasperFillManager.fillReport(reportFile.getPath(), parametros, conexion);
                
//Nombre archivo resultado.
//Sugerencia: traten de generar un nombre dinamico concatenando fecha y hora para evitar se pisen los reportes al tener el mismo nombre.
 String xlsFileName = "archivo.xls";
               
                
//Creacion del XLS
JRXlsExporter exporter = new JRXlsExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
                exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME,xlsFilesSource + xlsFileName);
                exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.TRUE);
exporter.exportReport();

//En este punto ya esta Creado el XLS
				
				
//Ahora lo Voy a Leer Y A forzar al Navegador Muestre Dialogo Para descargar el archivo
//Funciona En IE y Firefox
           
				
//Leer el archivo.
File f = new File (xlsFilesSource + xlsFileName);
				
//Configurar el tipo de archivo.
response.setContentType ("application/vnd.ms-excel");
				
//Obtener el Nombre del archivo.
String name = f.getName().substring(f.getName().lastIndexOf("/") + 1,f.getName().length());
				
//Configurar cabecera y nombre de archivo a desplegar en DialogBox.
				response.setHeader ("Content-Disposition", "attachment;filename=\"" + xlsFileName + "\"");
				
				
InputStream in = new FileInputStream(f);
ServletOutputStream outs = response.getOutputStream();
		
int bit = 256;
int i = 0;
				
while ((bit) >= 0) {
        	bit = in.read();
        	outs.write(bit);
}
					
outs.flush();
outs.close();
in.close();
Noten que tras generar el archivo lo leeo y envio al browser para su descarga al pd del cliente desplegando el dialogo de descarga. para quien preguntaba si era necesario configurar algo en el reporte para generarlo en exel, pues no, uno al crear el reporte el reporte se genera en el formato que uno desee, dependiendo el metodo de exportacion que utilize. nada más. lo que tienen que tener en cuenta es que cuando exporten a exell solo se exporta el texto, NO las imagenes, asi que diseñen el reporte teniendo en cuenta estos detalles

Saludos a tododos!!
__________________
Se Despide

DestruKtor
  #184 (permalink)  
Antiguo 24/05/2005, 08:10
Avatar de DestruKtor  
Fecha de Ingreso: marzo-2005
Mensajes: 95
Antigüedad: 19 años, 1 mes
Puntos: 4
Cita:
Iniciado por stavera

Hola a todos, necesito una gran ayuda, anteriormente ya habia generado mis preguntas pero no logro ninguna solución, tengo un pequeño problema y es que estoy generando mis reportes en excel y html, pero cuando los corro no me los deja visualizar.

Pasa lo siguiente ejecuto el jsp y me abre la sesion de excel pero no me lo muestra, esto pasa con un codigo y genere otro jsp pero el archivo me lo guarda en la ruta pero no me lo deja ver al igual que el otro y con el de html quisiera generarlo pero no colocando la ruta del internet explorer sino que me lo habra directamente en el browser. Estuve verificando todo el foro nuevamente y no encuentro la solución, estoy trabajndo con el codigo que da Destruktor pero no ha sido posible.

Si alguien tiene algun ejemplo de como lo puedo realizar se lo agredeceria muchisimo.

Stavera, Cuando exportas a Excel o HTML se genera un archivo fisico en disco, por ello tras crearlo debes hacer algo para visualizarlos, como ves en el codigo que postee, el el caso del exel, yo lanzo el cuadro de descarga, donde te da la opcion de abrir el archivo o descargarlo.

en el caso del html, tambien es muy simple la solucion, simplemente tomas la ruta del html en el servidor y se la cargas al navegante, en la pagina o en un iframe, muy simple
__________________
Se Despide

DestruKtor
  #185 (permalink)  
Antiguo 25/05/2005, 17:26
 
Fecha de Ingreso: mayo-2005
Mensajes: 2
Antigüedad: 19 años
Puntos: 0
Respuesta a dos ventanas en IExplorer

Cita:
Iniciado por DestruKtor
Hola Estimados.

Relacionado, con lo ultimo que converse con laraos, el problema que existe entre I.Explorer + Acrobat <= 6 y Jasperreport.

jasperreport esta haciendo su trabajo, pero por algun motivo internet explorer no es capaz de llamar a acrobat para que muestre el reporte, yo hice pruebas con acrobat 6, lo raro es que por ejemplo en mozilla firefox con acrobat 6 si funciona todo a la prefeccion, una solucion como le comente a laraos es instalarse el acrobat 7, pero existe mucha gente aún con verciones de acrobat 5 y 6.

tambien con acrobat 7 no se si les sucede, ejecuta el reporte pero en una ventana fuera del navegador, cuando deberia ejecutarlo inscrustado acrobat dentro del browser, cosas raras no?

alguna idea de por que sucede este efecto?? si alguien encuentra algo relacionado con este tema por favor dehen el link en el foro muchachos.

Suerte a todos!!

Buenas.. yo también esto empezando en esto de jsp, java, etc.. y pues estoy aventandome una aplicación para generar reportes vía web...
este sitio me ha sido de gran utilidad y me gustaría devolver el favor....
En la cuestión de que el explorfer arroja el PDF en dos ventanas se debe a que el archivo jsp que va a imprimir el repotre no debe contener encabezado html ni ningpun tipo de content-type, por que al ahora de mandar el pdf se le indica que el tipo de aplicación es pdf y ésto supongo confunde al explorer.
La solución es simplemente el archivo que imprima el pdf dejarlo sin tags de HTML al inico y al final, es decir, sin <title><body>, etc... y con éso está jalando bien en mi aplicación.. Espero les sirva...
Por ahpi leí que tienen un buen manual de como usar jFreeChart.. Se los agradecería mucho si me los pudieran enviar...

Gracias de antemano...

Luis
  #186 (permalink)  
Antiguo 27/05/2005, 09:17
 
Fecha de Ingreso: mayo-2005
Mensajes: 7
Antigüedad: 19 años
Puntos: 0
SALUDOS gracias a este y otro foro por fn fui capaz de correr reportes con jasper reports en pdf, ahora voy a tratar de generar reportes en excel, espero pronto decirles como se hace bien
  #187 (permalink)  
Antiguo 30/05/2005, 06:14
 
Fecha de Ingreso: mayo-2005
Mensajes: 5
Antigüedad: 19 años
Puntos: 0
Hola a todos!!!
Estoy tratando de mostrar un reporte desde una JSP en un pdf, usando jasperreports, internet explorer y acrobat 6.0.

EL reporte lo puedo compilar bien (genera el .jasper), también realizó bien la conexión a la base de datos, pero la siguiente línea de código lanza una exception:

byte[] bytes = JasperRunManager.runReportToPdf(rptFile.getPath(), parameters,conn);

La exception es:

org.apache.jasper.JasperException: com/lowagie/text/DocumentException

El reporte es muy simple, solo imprime un "hola", no tiene parámetros y mucho menos imágenes...
Necesito usarlo desde una aplicación con struts, si alguién tiene algún ej. que haya usado con struts ó alguna página para visitar, puede pasarla, por favor.

Recién estoy comenzando con esto...si alguien puede ayudarme , estaré muy agradecida.

Saludos
  #188 (permalink)  
Antiguo 30/05/2005, 08:45
 
Fecha de Ingreso: mayo-2005
Mensajes: 13
Antigüedad: 19 años
Puntos: 0
llakare Lee el principio de este foro, ahi te comentan el nombre de unos archivos *.jar, que debes de tener en :
C:\jakarta\webapps\ROOT\WEB-INF\lib
y en
C:\iReport\lib
  #189 (permalink)  
Antiguo 30/05/2005, 08:50
 
Fecha de Ingreso: mayo-2005
Mensajes: 13
Antigüedad: 19 años
Puntos: 0
java.lang.OutOfMemoryError

Hola a todos, y gracias por la ayuda que me brindaron para desarrollar reportes, y claro que tambien revise mi codigo que contenia algunos errores, basicos, pero no todo puede ser buenas noticias, al momento de que realizo mi reporte, me marca la siguiente exception java.lang.OutOfMemoryError.
Me imagino que es por el numero de registros que encuentra.
Realiza un reporte en XLS Excel, me lo muestra cuando son menos de 1000 registros, pero cuando son 3000 reg. me marca el error que les comento.
Alguien sabe como manejar esta exception! GRACIAS POR TODO!
  #190 (permalink)  
Antiguo 30/05/2005, 10:28
 
Fecha de Ingreso: mayo-2005
Mensajes: 2
Antigüedad: 19 años
Puntos: 0
com/lowagie/text/DocumentException

Cita:
Iniciado por llakare
Hola a todos!!!
Estoy tratando de mostrar un reporte desde una JSP en un pdf, usando jasperreports, internet explorer y acrobat 6.0.

EL reporte lo puedo compilar bien (genera el .jasper), también realizó bien la conexión a la base de datos, pero la siguiente línea de código lanza una exception:

byte[] bytes = JasperRunManager.runReportToPdf(rptFile.getPath(), parameters,conn);

La exception es:

org.apache.jasper.JasperException: com/lowagie/text/DocumentException

El reporte es muy simple, solo imprime un "hola", no tiene parámetros y mucho menos imágenes...
Necesito usarlo desde una aplicación con struts, si alguién tiene algún ej. que haya usado con struts ó alguna página para visitar, puede pasarla, por favor.

Recién estoy comenzando con esto...si alguien puede ayudarme , estaré muy agradecida.

Saludos

Lo que necesitas es el archivo itext-1.01.jar (es la versión que yo uso). Copialo del directorio lib del iReport dentro del WEB-INF/lib del directorio de tu aplicación jsp....
  #191 (permalink)  
Antiguo 30/05/2005, 10:50
 
Fecha de Ingreso: mayo-2005
Mensajes: 5
Antigüedad: 19 años
Puntos: 0
Me faltó decir que estoy usando jasperreports-0.6.7, tengo incluido en el directorio lib el archivo itext-1.02b...será la versión de este jar????

Muchas gracias por contestar...

SAludos
  #192 (permalink)  
Antiguo 30/05/2005, 11:49
Avatar de DestruKtor  
Fecha de Ingreso: marzo-2005
Mensajes: 95
Antigüedad: 19 años, 1 mes
Puntos: 4
Cita:
Iniciado por patasgreen20
Hola a todos, y gracias por la ayuda que me brindaron para desarrollar reportes, y claro que tambien revise mi codigo que contenia algunos errores, basicos, pero no todo puede ser buenas noticias, al momento de que realizo mi reporte, me marca la siguiente exception java.lang.OutOfMemoryError.
Me imagino que es por el numero de registros que encuentra.
Realiza un reporte en XLS Excel, me lo muestra cuando son menos de 1000 registros, pero cuando son 3000 reg. me marca el error que les comento.
Alguien sabe como manejar esta exception! GRACIAS POR TODO!
Pues lo ideal seria traer menos registros, pero si no tienes mas remedio deberias ver la configuracion de jakarta, a ver si le puesdes dar mas memoria de trabajo al servidor.
__________________
Se Despide

DestruKtor
  #193 (permalink)  
Antiguo 31/05/2005, 02:03
 
Fecha de Ingreso: mayo-2005
Mensajes: 5
Antigüedad: 19 años
Puntos: 0
Una pequeña duda

Hola a todos, queria saber si a alguien le ha ocurrido alguna vez esto.
Es a nivel ya de diseño desde el IReport, en un static text pongo Año y en el pdf q me genera sale A?o, al parecer no coje la ñ. No se si es de IReport o de Acrobat 7, alguien tiene idea pq puede ser? Gracias
  #194 (permalink)  
Antiguo 31/05/2005, 10:49
 
Fecha de Ingreso: abril-2005
Ubicación: medellin colombia
Mensajes: 25
Antigüedad: 19 años
Puntos: 0
De acuerdo Para llakare

Hola no es la version de jar es que debes instalar acrobat 7 ya que por estrañas razones no funciona si no con este a la hora de ejecutarlo, pero fijate si tienes todas las variables entorno en el ClassPath donde deben ir los .jar de la BD que estas utilizando, mas o menos asi: CLASSPATH: C:\iReport\lib\itext-1.02b.jar (este archivo es para el uso de archivos pdf)
verifica y si tienes alguna dudas con mucho gusto.

  #195 (permalink)  
Antiguo 31/05/2005, 10:55
 
Fecha de Ingreso: abril-2005
Ubicación: medellin colombia
Mensajes: 25
Antigüedad: 19 años
Puntos: 0
De acuerdo Para Acano

Hola Acano mira estuve realizando varios ensayos y todos mis reportes generados en iReport en pdf se sale bien, me toma la ñ normalmente, verifca si tu version de acrobat es 7.

  #196 (permalink)  
Antiguo 31/05/2005, 17:47
 
Fecha de Ingreso: febrero-2005
Mensajes: 5
Antigüedad: 19 años, 2 meses
Puntos: 0
Hola amigos, tengo un peque;o pero gran problema, es que cuando ejecuto el .jar no me muestra los reportes, pero si compilo todo, los muestra, estoy utilizando netbeans y ya copie todas las clases y todo a mi jsdk.

Cliente c = new Cliente();
URL urlc = c.getClass().getResource("//Proyecto//Reportes//R_Clientes.jasper");
JasperReport masterReport = (JasperReport)JRLoader.loadObject(urlc);

apunto nuevamente q si funciona si lo hago correr el programa desde netBeans, pero al ejecutar el .jar, no muestra el reporte, y el error es en la ultima linea de codigo q adicione anteriormente

Espero q me puedan ayudar

Saludos
  #197 (permalink)  
Antiguo 01/06/2005, 16:20
 
Fecha de Ingreso: junio-2005
Mensajes: 1
Antigüedad: 18 años, 11 meses
Puntos: 0
Sobre la estructura del documento XML de Jasper Reports

Hola a todos, he estado trabajando con Jasper Reports y me gustaria aprender la estructura del documento XML del diseño, mas detallado que como se explica en la pagina de jasper Reports. Alguien me pudiera ayudar, o conoce alguna pagina web que la describa?

Gracias
  #198 (permalink)  
Antiguo 01/06/2005, 23:29
 
Fecha de Ingreso: abril-2005
Mensajes: 3
Antigüedad: 19 años
Puntos: 0
Saludos a todos.
Necesito diseñar un reporte donde la pagina a ver o imprimir se desplige de forma horizontal.
Gracias por la ayuda que me puedan brindar.
  #199 (permalink)  
Antiguo 02/06/2005, 01:50
 
Fecha de Ingreso: mayo-2005
Mensajes: 5
Antigüedad: 19 años
Puntos: 0
Para STAVERA

Muchas gracias Stavera, al final fue un lapsus mental, jjaajajaja.
Era por el tipo de letra del documento PDF.
Un Saludo a todos
Bueno otra cosita de diseño q aun no e conseguido desvelar es pintar en el diseño una linea vertical q coja varios BAND (por ej: ColumnHeaders, detaills).
Sabrian acerlo??
Gracias
  #200 (permalink)  
Antiguo 02/06/2005, 05:39
 
Fecha de Ingreso: mayo-2005
Mensajes: 5
Antigüedad: 19 años
Puntos: 0
Sonrisa ireport + struts

Hola!!!
Primero, muchas gracias a todos los que respondieron (lmflores, patasgreen20 y stavera), ya solucioné mi problema.

Ahora tengo otra duda, estoy trabajando con struts y hibernate para el mapeo a una base relacional. En los códigos de ej. que vi, para usar el método
JasperRunManager.runReportToPdf(...), tengo que pasarle la conexión a la Bd, utilizando el DriverManager y demás...el tema es que en struts eso es transparente porque está todo configurado desde archivos xml, me gustaria saber si se puede hacer de otra forma, tal vez hay otro método para utilizar.
Alguien sabe donde puedo encontrar información sobre la documentación de las clases Jasper como JasperRunManager, por ej. ???
Mi otra consulta es:
Cómo puedo llenar los datos del reporte con los resultados que me dá una clase java??? (supongamos que invoco a un método q me retorna una lista de objetos ), es decir desde la JSP invoco al método y de ahi lleno el reporte.
Lei desde el comienzo del foro, no sé si mi duda se resuelve usando datasource, si alguien tiene un ejemplo, se lo agradeceré.
Desde ya muchas gracias, el foro está muy bueno, y es genial que la gente que sabe dedique parte de su tiempo a contestar y compartir sus conocimientos. Lamentablemente yo no sé lo suficiente como para poder contestar, por ahora :=(
Saludos

llakare
  #201 (permalink)  
Antiguo 02/06/2005, 09:29
 
Fecha de Ingreso: abril-2005
Mensajes: 31
Antigüedad: 19 años
Puntos: 0
Por favor

Alguien sabe como hacer para evitar que se lance un reporte PDF, cuando este no cumple unos parametros de entrada. Es decir cuando la consulta o query no retorna registros?

Gracias por la ayuda que puedan darme !!!

Última edición por laraos; 02/06/2005 a las 09:47
  #202 (permalink)  
Antiguo 06/06/2005, 13:51
 
Fecha de Ingreso: mayo-2005
Mensajes: 13
Antigüedad: 19 años
Puntos: 0
laraos: Lo que puedes hacer

LARAOSLo que hago yo, que no se si te sirva, es lo sig. haz de cuenta que yo genero una busqueda, que muestro en pantalla, y luego si se desea generar el PDF o el archivo en XLS, coloco un boton que dice generar PDF o XLS, pero este boton esta deshabilitado cuando no encuentra registros, y habilitado cuando si, dentro del While de query coloco un contador, el cual me indica cuantos registros encontro, el la parte del boton de la jsp, le pongo una condicion de que cuando sea > a 0, me lo habilite y si es 0 me lo deshabilita, espero que esto te sirva de algo!
  #203 (permalink)  
Antiguo 07/06/2005, 08:55
 
Fecha de Ingreso: abril-2005
Ubicación: medellin colombia
Mensajes: 25
Antigüedad: 19 años
Puntos: 0
De acuerdo Para Laraos

Hola Laraos, veo que tu trabajas con parametros, queria saber si me puedes explicar un poco como coloco los parametros en mi jsp, tengo un reporte que por medio de una pagina me ingresar ciertos datos, esos datos los tomo como parametros para que genere el reporte, pero no he podido saber como los coloco en mi jsp, si me puedes ayudar en eso te lo agradeceria muchisimo, ah y también te pregunto si saber si en el query se puede realizar una seleccion multiple, te explico tengo un reporte donde debo colocar cierta información pero de diferentes tablas.


muchas gracias por la ayuda que me puedas brindar.

  #204 (permalink)  
Antiguo 08/06/2005, 09:34
 
Fecha de Ingreso: abril-2005
Mensajes: 31
Antigüedad: 19 años
Puntos: 0
Exclamación

Muchas gracias patasgreen20, tengo una pregunta tu traes el recorset y ahi es donde te das cuenta de que no hay registros?

stavera, en el inicio del foro hay mas sobre parametros, aunque mira yo los trabajo asi:
//Tomo el parametro que viene de otra pagina, en este caso lo llame PERSONA_ID

String IdPersona = request.getParameter("PERSONA_ID");
Map mapParametros = new HashMap();
//Carga de parametros

//El primer campo se refiere al nombre tal cual lo llamaste en iReport o en la herramienta donde generas los jrxml; el segundo parametro es la variable IdPersona que cree inicialmente en la pagina (o que viene por teclado)

mapParametros.put("PERSONA_ID", IdPersona );

//le puedes pasar tantos parametros como quieras teniendo en cuenta la estructura mapParametros.put("Nombre del parametro definido en Ireport", Variable que ingresa por teclado);

Última edición por laraos; 08/06/2005 a las 09:49
  #205 (permalink)  
Antiguo 08/06/2005, 10:31
 
Fecha de Ingreso: mayo-2005
Mensajes: 13
Antigüedad: 19 años
Puntos: 0
LARAOS Pues se podria decir que si, tengo 2 jsp, una que me muestra la info en patalla que llamare "a" y otra que me muestra el PDF que llamare "b", en la primera JSP "a" tengo lo siguente

java.sql.Statement stmt = null;
java.sql.ResultSet rs = null;


try
{
stmt = conna.createStatement();
} catch(Exception e)
{
System.out.println("Error stmt!"+ e);
}
j=0;
rs = stmt.executeQuery(sqltodo);

while (rs.next())
{
String cad1= rs.getString(1); if (cad1 == null ) cad1 = " ";
String cad2= rs.getString(2); if (cad2 == null ) cad2 = " ";
//ESTE CONTADOR MUESTRA CUANTOS REGISTROS HAY
j=j+1;

Luego en la parte de abajo de la jsp "a", coloco 1 boton "GENERAR PDF"
<form action="reportePDF.jsp" method="post" name="form3" " >
<input NAME="sub" TYPE="hidden" VALUE="NO">
<div aling="center">
<input type="submit" name="Submit" value="Generar PDF" <%if(j==0) {%>disabled = true <%}%> >
</div>
</form>

como podras ver el boton se deshabilita (es decir no puede ser precionado) si no encuentra registro alguno, si encuentra por lo menos 1 registro el boton es habilitado, y manda a otro jsp "b" que genera el pdf, aqui tienes varias opciones subir a session el QUERY desde el jsp "a" y recibirlo en la jsp "b", y meterlo al reporte!
  #206 (permalink)  
Antiguo 08/06/2005, 11:11
 
Fecha de Ingreso: abril-2005
Mensajes: 31
Antigüedad: 19 años
Puntos: 0
Muchas gracias patasgreen20 si me sirve!!
__________________
;-)
  #207 (permalink)  
Antiguo 09/06/2005, 14:52
 
Fecha de Ingreso: junio-2005
Mensajes: 1
Antigüedad: 18 años, 10 meses
Puntos: 0
ayuda con el ireport y netbeans

Hola necesito ayuda baje la fuente del ireport y cree un nuevo proyecto en netbeans con condigo fuente existente donde le doy la ruta de la fuente q baje cuando lo compilo me sale muchos errores como por ejemp no existe el paquete net.sf.jaspereports.engine.JRReport.*; les agradeceria cualquier ayuda
  #208 (permalink)  
Antiguo 11/06/2005, 09:57
 
Fecha de Ingreso: abril-2005
Mensajes: 9
Antigüedad: 19 años
Puntos: 0
Salida a formato html

Hola Muchachos. Gracias por la participacion en el foro y por sus aportes de los cuales he aprendido mucho.

He leido todo el foro y veo que hablan de lo facil que es generar reportes con formato html, es tanto que hasta obvian ilustrarlo por lo fácil, pero yo trato de hacerlo desde un jsp invocando un .jasper y me genera el archivo bien, pero la abrirlo no lo hace bien, me sale desconfigurado, ingreso a la ruta donde lo genero, lo abro y esta excelente; mi codigo es el siguiente:

--------------------------------------------------------------
<%@ page import="net.sf.jasperreports.engine.export.*"%>
<%@ page import="net.sf.jasperreports.engine.*"%>
<%@ page import="net.sf.jasperreports.engine.fill.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%@ page import="javax.sql.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="javax.naming.*" %>
<%@ page import="net.sf.jasperreports.view.*"%>
<%@ page contentType="application/html" language="java" %>

<%
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/myoracle");
Connection conn = ds.getConnection();

String filejasper = "oferta.jasper";
String JasperFilesSource = "reportes/";

//Cargamos la definicion del reporte *.jasper
File reportFile = new File(application.getRealPath("/reportes/oferta.jasper"));

//cargamos parametros del reporte (si tiene).
Map parametros = new HashMap();

//Generar XLS.
//Preparacion del reporte (en esta etapa se inserta el valor del query en el reporte).

JasperPrint jasperPrint=JasperFillManager.fillReport(reportFil e.getPath(), parametros, conn);

//Nombre archivo resultado.
String htmFilesSource = "/reportes/oferta.html";

//Creacion del html
JRHtmlExporter exporter = new JRHtmlExporter();
exporter.setParameter(JRExporterParameter.JASPER_P RINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_F ILE_NAME,application.getRealPath(htmFilesSource));
exporter.exportReport();

//Leer el archivo.
File f = new File (application.getRealPath(htmFilesSource));

//Obtener el Nombre del archivo.

String name = f.getName().substring(f.getName().lastIndexOf("/") + 1,f.getName().length());

//Configurar cabecera y nombre de archivo a desplegar en DialogBox.
response.setHeader("Content-Disposition", "attachment; filename=\" " + name + "\"");

InputStream in = new FileInputStream(f);
ServletOutputStream outs = response.getOutputStream();

int bit = 256;
int i = 0;

while ((bit) >= 0) {
bit = in.read();
outs.write(bit);
}

outs.flush();
outs.close();
in.close();

%>
-------------------------------------------------------------------------

si tienen alguna sugerencia les agradezco, les cuento ya pude lograrlo (gracias al foro) generando excel y pdf, ahora deseo que genere html pues me parece que se debe generar mas rápido; estare en lo cierto?

Mil gracias y que Dios los Bendiga.

WIfer
  #209 (permalink)  
Antiguo 11/06/2005, 14:33
 
Fecha de Ingreso: abril-2005
Mensajes: 31
Antigüedad: 19 años
Puntos: 0
GraceV siempre que tengas un problema de esa especie es por que no se encuentran esas clases en el directorio lib de tu proyecto.
__________________
;-)
  #210 (permalink)  
Antiguo 14/06/2005, 14:02
 
Fecha de Ingreso: junio-2005
Mensajes: 2
Antigüedad: 18 años, 10 meses
Puntos: 0
Tenes que generarte una clase la impleten la interface JRDataSource

Cita:
Iniciado por llakare
Hola!!!
Primero, muchas gracias a todos los que respondieron (lmflores, patasgreen20 y stavera), ya solucioné mi problema.

Ahora tengo otra duda, estoy trabajando con struts y hibernate para el mapeo a una base relacional. En los códigos de ej. que vi, para usar el método
JasperRunManager.runReportToPdf(...), tengo que pasarle la conexión a la Bd, utilizando el DriverManager y demás...el tema es que en struts eso es transparente porque está todo configurado desde archivos xml, me gustaria saber si se puede hacer de otra forma, tal vez hay otro método para utilizar.
Alguien sabe donde puedo encontrar información sobre la documentación de las clases Jasper como JasperRunManager, por ej. ???
Mi otra consulta es:
Cómo puedo llenar los datos del reporte con los resultados que me dá una clase java??? (supongamos que invoco a un método q me retorna una lista de objetos ), es decir desde la JSP invoco al método y de ahi lleno el reporte.
Lei desde el comienzo del foro, no sé si mi duda se resuelve usando datasource, si alguien tiene un ejemplo, se lo agradeceré.
Desde ya muchas gracias, el foro está muy bueno, y es genial que la gente que sabe dedique parte de su tiempo a contestar y compartir sus conocimientos. Lamentablemente yo no sé lo suficiente como para poder contestar, por ahora :=(
Saludos

llakare

Deberias hacerte una clase que implemente la interface JRDataSource...
Ademas debes implementar los metodos next() y getField() a tu manera. (Usar Reflection o BeanUtils)
A su vez al constructor de esta clase tenes que pasarle la Lista donde estan todos los valores que queres que aparezcan en el Reporte

por Ejemplo:

import java.util.Iterator;
import java.util.List;
import org.apache.commons.beanutils.BeanUtils;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRField;

public class ReporteDS implements JRDataSource {

private Iterator iterator;
private Object currentValue;
private List data;
private int index=-1;


public ReporteDS(List list) {

this.iterator = list.iterator();
data = list;

}

public boolean next() throws JRException {
index++;
return (index < data.size());
}

public Object getFieldValue(JRField field) throws JRException {
Object r = data.get(index);

try {
String s = field.getName();
return BeanUtils.getProperty(r,s);
} catch (Exception e) {
throw new JRException(e.getMessage());
}

}
}


y en la otra clase donde usas las Clases de Jasper:
bytes = JasperRunManager.runReportToPdf(jasperReport, parameters,
rds);

donde ReporteDS rds = null;
rds = new ReporteDS(list); // list es la lista de Objetos..

Espero haber sido claro....
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 61 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 23:04.