java - 从 servlet 将 Jasperreports 导出到 pptx

标签 java servlets jasper-reports

如何将 jasperReport 导出到 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();

最佳答案

这里按照以下方式进行:

                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();

希望这对您有帮助。

关于java - 从 servlet 将 Jasperreports 导出到 pptx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25626750/

相关文章:

java - @Value 不注入(inject)属性,保持为空

jasper-reports - 我们可以在分组堆积条形图上绘制折线图吗

java - ClassNotFoundException : org. apache.commons.javaflow.core.StackRecorder

java - Recyclerview 不显示来自适配器的数据

java - 在 Java 中如何检查我是否已到达 String 的末尾?

java - 不确定我做错了什么,简单的中间子字符串

java - 将 System.out.println 或 stdout 数据捕获到 swing 备忘录(大数据)

java - 将 html 表从 jsp 页面传递到 servlet

grails - Jasper Report 模板中的变音符号

java - 使 GWT 可抓取 (SEO)