2014-09-02 55 views
0

如何将jasperReport导出到pptx?将Jasperreports导出到Servlet的pptx

我尝试这一点,但不工作...

该servlet返回一个PPTX文件,但

 JasperPrint jasperPrint = JasperFillManager.fillReport(reporte, parametros, new JREmptyDataSource()); 
     String fileName = "informeDemo.pptx"; 
     JRPptxExporter exporter = new JRPptxExporter(); 
     exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); 
     exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, fileName); 
     exporter.exportReport(); 

     File f = new File(fileName); 

     response.setContentType("application/vnd.openxmlformats-officedocument.presentationml.presentation"); //Tipo de fichero. 
     response.setHeader("Content-Disposition", "attachment;filename=\"" + fileName + "\""); //Configurar cabecera http 

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

     int bit = 256; 
     while ((bit) >= 0) { 
      bit = in.read(); 
      out.write(bit); 
     } 

     out.flush(); 
     out.close(); 
     in.close(); 

回答

1

这里的做下面的方式将文件无法打开:

   JasperPrint jasperPrint = JasperFillManager.fillReport(reporte, parametros, new JREmptyDataSource()); 
       String fileName = "informeDemo.pptx"; 
       JRPptxExporter exporter = new JRPptxExporter(); 
       exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); 
       exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, fileName); 
       ByteOutputStream bos=new ByteOutputStream(); // note bos will contain jasperPrint as byte data 
       exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,bos); 
       exporter.exportReport(); 

       response.setContentType("application/vnd.openxmlformats-officedocument.presentationml.presentation"); //Tipo de fichero. 
       response.setHeader("Content-Disposition", "attachment;filename=\"" + fileName + "\""); //Configurar cabecera http 
       response.setCharacterEncoding("UTF-8"); 
       response.getOutputStream().write(bos.getBytes()); //note bos is written to response's output stream. 
       bos.flush(); 
       bos.close(); 
       response.flushBuffer(); 

希望这可以帮助你。