天天看点

jasperReports 通过java导出各种格式报表,及javaweb项目整合显示各种报表

注意:编写此项目时,请先手动编写**.jrxml

 或者用ireport生成**.jrxml或**.jasper

注:java导出报表与web项目显示报表方法其实是相同的,只不过有一句代码不同,如下

maven依赖

通过java代码生成各种格式报表文件

jdbc文件

生成 各种格式

与javaweb整合

本文用的是jasperreport最新版本6.0

web开发建议下载jasperreports library --> jasperreports-xxx-project 里面包含demo以及api

项目结构:

jar包:新手可以把下载下来的所有jar包都放进去,熟练之后可以根据自己所需加入相关jar包

webroot下:新建reports文件夹,用来存放jrxml、jasper文件;build.xml(放入进去之后会出现蚂蚁图标);

jasperReports 通过java导出各种格式报表,及javaweb项目整合显示各种报表

jrxml文件代码,此代码是xml格式文件,可以自己手写,也可以安装 ireport设计编译成jasper文件,为了入门下面纯手写

dbreport.jrxml:

<span style="font-size:14px;"><?xml version="1.0" encoding="utf-8" ?>  

<jasperreport xmlns="http://jasperreports.sourceforge.net/jasperreports"   

            xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"   

            xsi:schemalocation="http://jasperreports.sourceforge.net/jasperreports   

                                http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="dbreport" >  

    <!-- jasperreport标签中name="dbreport"需要对应外面文件名, $p{}为填充参数,$v{}为值 ,$f{}为查询值或者为jr数据-->  

    <!-- 页面样式标签 --属性:  

        forecolor(前景色,就是文本)  

        backcolor(背景色)  

        halign(水平位置center, justified, left, right)   

        valign(垂直位置bottom, middle, top)   

        border(边框1point, 2point, 4point, dotted, none, thin)   

        bordercolor(边框颜色)   

        fontname(字体)   

        fontsize(字体大小)   

        isbold,isitalic,isunderline,isstrikethrough(粗体,斜体,下画线,..)   

        linespacing(1_1_2, double, single行间距)   

        rotation(旋转,left, none, right,转的是90度)   

        isstyledtext(指示这个element是否用style,true,false)   

        isdefault(说明这个样式是否默认样式)   

    -->  

    <style name="pageheader" forecolor="#ffffff" backcolor="#333333"/>  

    <!-- 参数标签 -->  

    <parameter name="username" class="java.lang.string"/>  

    <!-- 查询语句标签 -->  

    <querystring>  

        <![cdata[ 

            select id,user_name as name,email,qq from user where user_name=$p{username} 

        ]]>  

    </querystring>   

    <!-- 显示字段标签 -->  

    <field name="id" class="java.lang.integer" />  

    <field name="name" class="java.lang.string" />  

    <field name="email" class="java.lang.string" />  

    <field name="qq" class="java.lang.string" />  

    <pageheader>  

        <band height="30">  

            <statictext>  

                <reportelement style="pageheader"  x="0" y="5" width="55" height="15"/>  

                <textelement textalignment="center"/>  

                <text><![cdata[id]]></text>  

            </statictext>  

                <reportelement style="pageheader"  x="55" y="5" width="205" height="15"/>  

                <text><![cdata[name]]></text>  

                <reportelement style="pageheader"  x="160" y="5" width="255" height="15"/>  

                <text><![cdata[email]]></text>  

                <reportelement style="pageheader"  x="260" y="5" width="255" height="15"/>  

                <text><![cdata[qq]]></text>  

        </band>  

    </pageheader>  

    <!-- 显示内容-->  

    <detail>  

        <band height="20">  

            <textfield>  

                <reportelement x="0" y="4" width="50" height="15"/>  

                <textelement textalignment="right"/>  

                <textfieldexpression><![cdata[$f{id}]]></textfieldexpression>  

            </textfield>  

            <textfield isstretchwithoverflow="true">  

                <reportelement positiontype="float" x="55" y="4" width="100" height="15"/>  

                <textfieldexpression><![cdata[$f{name}]]></textfieldexpression>  

                <reportelement positiontype="float" x="160" y="4" width="100" height="15"/>  

                <textfieldexpression><![cdata[$f{email}]]></textfieldexpression>  

                <reportelement positiontype="float" x="260" y="4" width="255" height="15"/>  

                <textfieldexpression><![cdata[$f{qq}]]></textfieldexpression>  

            <line>  

                <reportelement positiontype="float" x="0" y="19" width="515" height="1" forecolor="#808080"/>  

            </line>  

    </detail>  

</jasperreport>  

</span>  

后台代码:testservlet.java

<span style="font-size:14px;">package servlets;  

import java.io.file;  

import java.io.ioexception;  

import java.io.inputstream;  

import java.sql.resultset;  

import java.util.hashmap;  

import java.util.map;  

import javax.servlet.servletcontext;  

import javax.servlet.servletexception;  

import javax.servlet.http.httpservlet;  

import javax.servlet.http.httpservletrequest;  

import javax.servlet.http.httpservletresponse;  

import util.jdbc;  

import net.sf.jasperreports.engine.jrdatasource;  

import net.sf.jasperreports.engine.jrexporterparameter;  

import net.sf.jasperreports.engine.jrresultsetdatasource;  

import net.sf.jasperreports.engine.jaspercompilemanager;  

import net.sf.jasperreports.engine.jasperexportmanager;  

import net.sf.jasperreports.engine.jasperfillmanager;  

import net.sf.jasperreports.engine.jasperprint;  

import net.sf.jasperreports.engine.jasperreport;  

import net.sf.jasperreports.engine.jasperrunmanager;  

import net.sf.jasperreports.engine.data.jrmaparraydatasource;  

import net.sf.jasperreports.engine.export.jrhtmlexporter;  

import net.sf.jasperreports.engine.export.jrhtmlexporterparameter;  

import net.sf.jasperreports.engine.export.jrpdfexporter;  

import net.sf.jasperreports.engine.export.jrxlsexporter;  

import net.sf.jasperreports.engine.export.jrxlsexporterparameter;  

import net.sf.jasperreports.engine.util.jrloader;  

import net.sf.jasperreports.view.jasperviewer;  

public class testservlet extends httpservlet {  

    @override  

    protected void service(httpservletrequest request, httpservletresponse response)  

            throws servletexception, ioexception {  

        try{  

            servletcontext context = this.getservletconfig().getservletcontext();  

            //jaspercompilemanager 编译管理器  

            //jasperfillmanager 填充管理器  

            //jrxmlloader xml加载器  

            //jasperprintmanager 打印管理器  

            //jasperexportmanager 导出管理器  

            //jasperrunmanager 运行管理器  

            jaspercompilemanager.compilereporttofile(context.getrealpath("/reports/dbreport.jrxml"));//编译jrxml文件,生成jasper文件  

            map map=new hashmap();//参数map  

            map.put("username", "admin");  

            //生成jrprint文件  

            //jasperfillmanager.fillreporttofile(context.getrealpath("/reports/dbreport.jasper"), map, jdbc.conn);  

            file jasperfile=new file(context.getrealpath("/reports/dbreport.jasper"));  

            jasperreport jasperreport =(jasperreport)jrloader.loadobject(jasperfile);  

            jasperprint jasperprint = jasperfillmanager.fillreport(jasperreport, map,jdbc.conn);  

            //将查询的数据填充到报表中  

            //string sql="select id,user_name as name,email,qq from user";  

            //resultset rs=jdbc.getresultset(sql);  

            //jrresultsetdatasource jr=new jrresultsetdatasource(rs);   

            //jasperfillmanager.fillreporttofile(context.getrealpath("/reports/dbreport.jasper"), map, jr);  

            //jdbc.closeall(rs, jdbc.statement, null);//关闭数据连接  

            //jasperrunmanager.runreporttohtmlfile(context.getrealpath("/reports/dbreport.jasper"), map, jdbc.conn);  

            //jasperrunmanager.runreporttohtmlfile(context.getrealpath("/reports/dbreport.jasper"), map, jr);  

            //生成html文件  

            //jasperrunmanager.runreporttohtmlfile(context.getrealpath("/reports/dbreport.jasper"), "e:/test.html", map, jdbc.conn);  

            //inputstream  inputstream=getservletconfig().getservletcontext().getresourceasstream(context.getrealpath("/reports/dbreport.jasper"));  

            //jasperrunmanager.runreporttopdfstream(inputstream, response.getoutputstream(), map, jr);  

            //-----以map数组为数据源,生成html文件  

            jasperrunmanager.runreporttohtmlfile(context.getrealpath("/reports/dbreport.jasper"), "e:/test2.html", map, getreportdatasource());  

            //生成html数据  

            /* 

            jrhtmlexporter html = new jrhtmlexporter(); 

            html.setparameter(jrhtmlexporterparameter.jasper_print, jasperprint); 

            html.setparameter(jrhtmlexporterparameter.output_writer,response.getwriter()); 

            html.setparameter(jrhtmlexporterparameter.is_using_images_to_align,boolean.false); 

            html.setparameter(jrexporterparameter.character_encoding, "utf-8"); 

            html.exportreport(); 

            */  

            //生成excel  

            jrxlsexporter xls=new jrxlsexporter(); 

            xls.setparameter(jrxlsexporterparameter.jasper_print, jasperprint); 

            xls.setparameter(jrxlsexporterparameter.output_stream, response.getoutputstream()); 

            xls.setparameter(jrxlsexporterparameter.is_one_page_per_sheet, boolean.false); 

            xls.setparameter(jrxlsexporterparameter.is_white_page_background, boolean.false); 

            response.setheader("content-disposition", "attachment;filename=first.xls"); 

            response.setcontenttype("application/vnd_ms-excel"); 

            xls.exportreport(); 

            //生成pdf  

            jrpdfexporter pdf = new jrpdfexporter();  

            pdf.setparameter(jrexporterparameter.jasper_print, jasperprint); 

            pdf.setparameter(jrexporterparameter.output_stream, response.getoutputstream()); 

            response.setheader("content-disposition", "attachment;filename=first.pdf"); 

            response.setcontenttype("application/pdf"); 

            response.setcharacterencoding("utf-8");   

            pdf.exportreport(); 

        }catch(exception e){  

            e.printstacktrace();  

        }  

    }  

    private jrdatasource getreportdatasource(){  

        //new jrmaparraydatasource(getmaparray());这里也可以传自定义对象数组,对象属性字段必须对应dbreport.jrxml中显示数据字段  

        jrmaparraydatasource datasource=new jrmaparraydatasource(getmaparray());  

        return datasource;  

    private map[] getmaparray(){  

        //map key键必须对应dbreport.jrxml中显示数据字段  

        map map1=new hashmap();  

        map1.put("id", 1);  

        map1.put("name", "aaa");  

        map1.put("email", "[email protected]");  

        map1.put("qq", "111");  

        map map2=new hashmap();  

        map2.put("id", 2);  

        map2.put("name", "bbb");  

        map2.put("email", "[email protected]");  

        map2.put("qq", "222");  

        map map3=new hashmap();  

        map3.put("id", 3);  

        map3.put("name", "ccc");  

        map3.put("email", "[email protected]");  

        map3.put("qq", "333");  

        map[] maparray=new map[3];  

        maparray[0]=map1;  

        maparray[1]=map2;  

        maparray[2]=map3;  

        return maparray;  

}  

jdbc:

<span style="font-size:14px;">package util;  

import java.sql.connection;  

import java.sql.drivermanager;  

import java.sql.statement;  

public class jdbc {  

    public static string driver="com.mysql.jdbc.driver";  

    public static string url="jdbc:mysql://localhost:3306/myapp";  

    public static string user="root";  

    public static string pwd="root";  

    public static connection conn=getconnection();  

    public static statement statement=getstatement();  

    private static connection getconnection(){  

        if(conn==null){  

            try{  

                 class.forname(driver);  

                 conn=drivermanager.getconnection(url,user,pwd);  

            }catch(exception e){  

                e.printstacktrace();  

            }  

        return conn;  

    private static statement getstatement(){  

        if(statement==null){  

                statement=conn.createstatement();  

        return statement;  

    public static resultset getresultset(string sql){  

        resultset rs=null;  

            rs=statement.executequery(sql);  

        return rs;  

    public static void closeall(resultset rs,statement st,connection cn){  

            if(rs!=null){  

                rs.close();  

            if(st!=null){  

                st.close();  

            if(cn!=null){  

                cn.close();  

执行效果:html数据

jasperReports 通过java导出各种格式报表,及javaweb项目整合显示各种报表