JasperReport+Struts2集成 生成报表【转】


            之前生成报表,数据源都是通过SQL查询获得,把SQL语句写在报表模板里。这次的数据源是需要调用存储过程,导出Excel报表,于是傻眼了。ireport里没法call 存储过程啊,网上查说可以封装成JavaBean,但是看了步骤好麻烦。同事有用jxl直接导出Excel的,不用jasperreport报表工具,觉得还是比较死板。后来问了岑同学,才知道有这么简便的方法,struts2原来是整合了jasperReport的,Action里只要通过调用service层得到数据,直接就可以编译报表导出来了。。。我真是out。。。orz

第一步:准备相关包放到工程的lib目录下:
    groovy-all-1.7.5.jar
    commons-beanutils-1.8.3.jar
    commons-digester-1.7.jar
    commons-logging-1.0.4.jar
    iText-2.1.7.jar
    iTextAsian.jar
    iText-rtf-2.1.7.jar
    jasperreports-4.0.2.jar
    json-lib-2.3-jdk15.jar
    struts2-core-2.1.8.1.jar
    struts2-jasperreports-plugin-2.1.8.1.jar
    struts2-json-plugin-2.1.8.1.jar
    struts2-junit-plugin-2.1.8.1.jar
    说明:这些包能够相兼容,当然你也可以使用其他一些相兼容的包

第二步:使用模板设计工具IReport制作模板(*.jrxml),编译成二进制文件(*.jasper)

第三步:新建ExportPDFAction
    public class ExportPDFAction  extends ActionSupport{
        List list;
        list  get、set方法;
        public String exportPDF()
        {
            try {
                list =new ArrayList();
                // 此处省略
                // ...
               
                String reportSource = request.getRealPath("/jasper/pdf_report.jrxml");
                File parent = new File(reportSource).getParentFile();
               
                //将.jrxml模板文件编译成为.jasper文件,当然,其文件名可以指定,如果没指定,则与.jrxml文件名一样.只是后缀不同而已
                JasperCompileManager.compileReportToFile(reportSource, new File(parent, "pdf_report.jasper").getAbsolutePath());

            } catch (EamDataAccessException e) {
                e.printStackTrace();
            } catch (JRException e) {
                e.printStackTrace();
            }
            return SUCCESS;
        }
    }

 
第四步:struts.xml中的配置如下:
    <package name="houseQueryAndReport" extends="jasperreports-default"> 
                                                      // 我加了继承jasperreports-default这个包,反倒报异常,不加反而能运行,好奇怪
        <result-types>
            <result-type name="jasper" class="org.apache.struts2.views.jasperreports.JasperReportsResult"></result-type>
        </result-types>
        <action name="exportPDF" method="exportPDF"  class="cck.ExportPDFAction">
            <result name="success" type="jasper">
                <param name="location">
                    /jasper/pdf_report.jasper
                </param>
                <param name="dataSource">list</param>
                <param name="format">PDF</param>
            </result>
        </action>
        <action name="exportPDF" method="exportPDF"  class="cck.ExportPDFAction">
            <result name="success" type="jasper">
                <param name="location">
                    /jasper/pdf_report.jasper
                </param>
                <param name="dataSource">list</param>
                <param name="format">XLS</param>
            </result>
        </action>
    </package>

    location 是指我们刚才用iReport编译生成的jasper文件

    dataSource 是指我们执行的数据库查询结果,JavaBean , List

    format 是指需要输出的类型,默认是PDF,其他的输出类型有:XML、HTML、XLS、CSV、RTF ,注意这里一定要大写

    除了这几个参数,还有下列参数:

    delimiter 是指如果输出类型为CSV的话,指定分割符,默认为“,”

    parse 是指是否解析location参数中的EL表达式,默认为 true

    contentDisposition 指定disposition,默认为“inline”,如果设为“attachment”就是强制下载

    documentName 输出的文件名

    format 格式,默认为“PDF”,其他的有:CSV、HTML、RTF、XLS、XML

    imageServletUrl 生成图形的路
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值