Ver Mensaje Individual
  #917 (permalink)  
Antiguo 11/09/2007, 15:35
Avatar de glomer
glomer
 
Fecha de Ingreso: septiembre-2007
Mensajes: 5
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Archivos EXCEL

Cita:
Iniciado por DestruKtor Ver Mensaje
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!!