ireport简单记录

需要的jar包去官网下载
可能需要的jar包
这里写图片描述

1.ireport的jsp 打印(ireport转PDF,japser要在ireport里preview设置成pdf版的)

前台定义显示pdf的iframe
src对应后台action
action具体方法:

public void PrintPdf(Map<String,Object> map) throws Exception{

    //得到需要显示的japser
    String path = (String) map.get("realpath");
    File reportFile = new File(path);

    //japser解析器
    JasperPrint jasperPrint = null; 
    //需要导出的pdf名字
    String outFileNamePdf = (String) map.get("ireportName")+".pdf";
    try  
    {  
        //填充了jasper的样式
        JasperReport jasperReport = (JasperReport) JRLoader.loadObject(reportFile.getPath());  
        //得到conn
        java.sql.Connection con = CloudDBConnection.getConnection();
        // 将集合对象数据填充到JasperReport中.  
        //参数1:jasper,参数2:param参数数据,参数3:conn连接
        jasperPrint = JasperFillManager.fillReport( jasperReport, map, con);

        //好多个重构的方法,也可以第一个传流 等等
        //jasperPrint = JasperFillManager.fillReport( request.getInputStream(), map, con);

         //导出到服务器或硬盘
        String targetpath = pdfFilePath(outFileNamePdf,"iReport_pdf");
        JasperExportManager.exportReportToPdfFile(jasperPrint, targetpath);// 导出pdf文件

//后面的是存放到response的输出流,返回给前台iframe显示            ServletActionContext.getRequest().getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);// 将图片保存在session中
        HttpServletResponse response = ServletActionContext.getResponse();
        response.setContentType("application/pdf");// 设置输出格式为pdf
        OutputStream out = response.getOutputStream();
        JRPdfExporter exporter_pfd = new JRPdfExporter(); // pdf导出器
        exporter_pfd.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);// 将内存中的图片放入解析器中
        exporter_pfd.setParameter(JRExporterParameter.OUTPUT_STREAM, out); // 输出图片
        exporter_pfd.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, outFileNamePdf);
        // 输出报表
        exporter_pfd.exportReport();
        // 刷新删除缓存
        out.flush();
        out.close();
        con.close();
    }  
    catch (Exception e)  
    {  
        e.printStackTrace();  
    }  

    return;
}

2.ireport另存为excel(japser要在ireport里preview设置成excel)

前台 window.location.href 指向后台action
action具体方法:

public void PrintExcel(Map<String,Object> map) throws Exception{

    String path = (String) map.get("realpath");
    File reportFile = new File(path);

    JasperPrint jasperPrint = null; 
    String outFileNameExcel = (String) map.get("ireportName")+".xls";
    try  
    {  
        JasperReport jasperReport = (JasperReport) JRLoader.loadObject(reportFile.getPath());  
        java.sql.Connection con = CloudDBConnection.getConnection();
        // 将集合对象数据填充到JasperReport中.  
        jasperPrint = JasperFillManager.fillReport( jasperReport, map, con);

        HttpServletResponse response = ServletActionContext.getResponse();
        response.setCharacterEncoding("UTF-8");  
        JRXlsExporter exporter=new JRXlsExporter();
        exporter.setParameter(JRXlsExporterParameter.JASPER_PRINT, jasperPrint);
        exporter.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, response.getOutputStream());
        exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
        exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);
        // 输出报表
        response.setHeader("Content-Disposition", "attachment;filename="+outFileNameExcel);
        response.setContentType("application/vnd_ms-excel");
        exporter.exportReport();
        con.close();
    }  
    catch (Exception e)  
    {  
        e.printStackTrace();  
    }  

    return;
}

3.先简单记录,如果以后需要别的功能,再研究
网上简单的例子
http://haohaoxuexi.iteye.com/blog/1204263
http://www.it165.net/pro/html/201305/5877.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值