IReport&Jasperreport使用实例代码

一..首先采用iReport作报表,生成相应的XXX..jrxml文件,具体操作可参考http://mooncome1983.blogchina.com/inc/iReport%23right.htm

二.采用Jasperreport在java中生成报表实例代码:

1 .不连接数据库时:
public   class  Test  {

    
/**
     * 
@param args
     
*/

    
public static void main(String[] args) {
        
// TODO Auto-generated method stub
        {
            JasperReport jasperReport;
            JasperPrint jasperPrint;
            
try {
                String temp
=System.getProperty("user.dir");
    
//compile xxx.jrxml
jasperReport = JasperCompileManager
                .compileReport(temp
+"/WebRoot/WEB-INF/classes/reports/jasperreports_demo.jrxml");
                
//路径的问题
                jasperPrint = JasperFillManager.fillReport(jasperReport,
                        
new HashMap(), new JREmptyDataSource());
                
//export pdf
                JasperExportManager.exportReportToPdfFile(jasperPrint,
                        temp
+"/WebRoot/WEB-INF/classes/reports/simple_report.pdf");
                
//export html
                JasperExportManager.exportReportToHtmlFile(jasperPrint,
                        temp
+"/WebRoot/WEB-INF/classes/reports/simple_report.html");
            
            }
 catch (JRException e) {
                e.printStackTrace();
            }

        }


    }

}

2 :连接数据库:
public   class  Test  {

    
/**
     * 
@param args
     
*/

    
public static void main(String[] args) {
        
// TODO Auto-generated method stub
        {
            JasperReport jasperReport;
            JasperPrint jasperPrint;
            
try {
                String temp
=System.getProperty("user.dir");
                
//把.jrxml文件编译成.jasper文件,尽管也可直接访问的已生成的.jasper文件,不过不推荐这样做,毕竟是iReport使
                
//用的JasperReport版本可能与我们在Java工程中包含的版本不一样,这样,直接使用iReport生成的.jasper文件可能会
                
//在下一步的runReport中出问题。
                jasperReport = JasperCompileManager
                        .compileReport(temp
+"/WebRoot/WEB-INF/classes/reports/test1.jrxml");
                
//路径的问题
                
//fillReport( , , ) 最后一个参数是取得数据连接
                JasperPrint jasperPrint1 = JasperFillManager.fillReport(jasperReport,new HashMap(),getMysqlConn());

                
//export pdf
                JasperExportManager.exportReportToPdfFile(jasperPrint1,
                        temp
+"/WebRoot/WEB-INF/classes/reports/test1.pdf");
                
//export html
                JasperExportManager.exportReportToHtmlFile(jasperPrint1,
                        temp
+"/WebRoot/WEB-INF/classes/reports/test1.html");
            
            }
 catch (JRException e) {
                e.printStackTrace();
            }

        }


    }

    
    
public static Connection getMysqlConn(){
        String url
="jdbc:mysql://localhost:3306/catalog"
        Connection dcon 
= null;


        
try {
            Class.forName(
"com.mysql.jdbc.Driver");
             dcon
=DriverManager.getConnection(url,"root","root"); 
        }
 catch (Exception e) {
            
// TODO Auto-generated catch block
            
            e.printStackTrace();
        }
 
        
        
return dcon;

    }

    
}


 

3 .采用servlet直接生成pdf等文件

public   class  TestServlet  extends  HttpServlet  {
    
      
public static final String XML_FILE_PATH =System.getProperty("user.dir")+"/WebRoot/WEB-INF/classes/reports/";
      
      
protected void doGet(HttpServletRequest req, HttpServletResponse res)
      
throws ServletException, IOException {

//    创建response输出流,设置responxe回应的头部
      OutputStream out = res.getOutputStream();
      res.setContentType(
"application/pdf");
      res.setHeader(
"Content-Disposition","attachment; filename=test1.pdf");  //filename为生成PDF的文件名
      String fileName = "test1.jrxml";
  Map map 
= null;

//    调用createPdf()获得PDF输出的字节流并打印出来。  
      byte[] bytes = createPdf(fileName,  map);
      res.setContentLength(bytes.length); 
      out.write(bytes, 
0, bytes.length);
      out.flush();
    }


    
protected void doPost(HttpServletRequest req, HttpServletResponse res)
    
throws ServletException, IOException {
      doGet(req, res);
    }
 

//    封装创建PDF输出的compile和run方法,返回最终生成的字节流

    
private byte[] createPdf(String fileName,  Map map) {
      String path 
= XML_FILE_PATH + fileName;//.jrxml文件的全路径
      String jrFile = XML_FILE_PATH + "test1.jasper";//编译结果.jasper文件的全路径
      byte[] bytes = null;
      
try{
          JasperCompileManager.compileReportToFile(path, jrFile);
          
//将.jrxml文件编译成.jasper文件
      }
catch (JRException e){   
          e.printStackTrace();
      }

      
try{
          bytes 
=JasperRunManager.runReportToPdf(jrFile, map, getMysqlConn());
          
//生成相应的的字节流
      }
catch (JRException e){
         e.printStackTrace();
      }

      
return bytes;
    }
 
    
public  Connection getMysqlConn(){
        String url
="jdbc:mysql://localhost:3306/catalog"
        Connection dcon 
= null;
        
try {
            Class.forName(
"com.mysql.jdbc.Driver");
             dcon
=DriverManager.getConnection(url,"root","root"); 
        }
 catch (Exception e) {
            
// TODO Auto-generated catch block
            try {
                dcon.close();
            }
 catch (SQLException e1) {
                
// TODO Auto-generated catch block
                e1.printStackTrace();
            }

            e.printStackTrace();
        }

        
return dcon;
    }

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值