使用jasperreposts生成报表方法一

使用jasperreposts生成报表:
我总结了三种方法, 使用jasperreposts生成报表方法一 说方法之前呢,先来点开胃的,导包(我这里使用的是最细发布的4.1.1,工具Eclipse, struts2 +Spring+iBatis)

(我这里的包是单独使用的时候的)

开始:
第一种方法:在后台生成报表保存到本地,然后再读取到jsp页面中
1).后台生成报表的工具类
package wohai.base.util.util_jasperreports;

import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSour ce;
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.JRPdfExporterParameter;
import net.sf.jasperreports.engine.export.JRXlsExporter;
import net.sf.jasperreports.engine.export.JRXlsExporterParameter;
import unite.bean.test.UserBean;

public class JrtsUtil {
 
              public static void generatePDF(String reportTitle, String reportFilePath,List<Object> list) throws IOException   {
                        // TODO Auto-generated method stub
                        //begCustNo,endCustNo分别为查询传入的开始编号,结束编号.
                        //jdbcCustomerDao = new JdbcCustomerDao();
                     ByteArrayOutputStream outPut = new ByteArrayOutputStream();
                        Map parameters = new HashMap();//参数设定
                        parameters.put("lie", reportTitle);//报表标题
                      
                        //List list = jdbcCustomerDao.getAllCustomer(begCustNo, endCustNo);
                          try {
                               
                                 JRBeanCollectionDataSour ce ds = new JRBeanCollectionDataSour ce(list);
                               
                                 JasperPrint jasperPrint = JasperFillManager.fillReport(reportFilePath, parameters, ds);
                               
                                 ByteArrayOutputStream oStream = new ByteArrayOutputStream();
                               
                                 JRPdfExporter pdfexporter = new JRPdfExporter();
                                 
                                 pdfexporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
                                   //设置输出流
                                   pdfexporter.setParameter(JRExporterParameter.OUTPUT_STREAM, outPut);
                                   //如果保存到硬盘用下面语句
                                 // pdfexporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, "e:\\report1.pdf");
                               
                                   pdfexporter.setParameter(JRPdfExporterParameter.IS_ENCRYPTED, Boolean.FALSE);
                               
                                  //pdfexporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "GBK");
                             
                                   pdfexporter.exportReport();
                                 
                                   FileOutputStream outputStream = new FileOutputStream("e:/report1.pdf");
                                 
                                   outputStream.write(outPut.toByteArray());
                               
                                   //输出成XML,PDF,HTML,CSV,XLS(Excel)的任一种文件。
//                                   OutputStream output = new FileOutputStream(new File("e:/report1.pdf"));
//                                 
//                                  JasperExportManager.exportReportToPdfStream(jasperPrint,output);
                               
                            } catch (JRException e) {
                                 e.printStackTrace();
                            }finally{
                                   outPut.flush();
                                   outPut.close();
                            }
                }
            
              public static void main(String[] args) throws IOException {
                     try {
                            List<UserBean> list = new ArrayList<UserBean>();
                            UserBean userBean = new UserBean();
                            userBean.setName("sdf");
                            userBean.setPassword("gg");
                            list.add(userBean);
                            //getCode();
                            generateHtml("mao","/iReport/report1.jasper",list);
                     } catch (Exception e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                     }
              }
            
              public static   void generateHtml(String reportTitle, String reportFilePath,List<UserBean> list) throws IOException   {
                     // jdbcCustomerDao = new JdbcCustomerDao();
                     ByteArrayOutputStream outPut = new ByteArrayOutputStream();
                   
                     Map parameters = new HashMap();//参数设定
                     parameters.put("lie",reportTitle );
               
                   //List list = jdbcCustomerDao.getAllCustomer(begCustNo, endCustNo);//获取数据
               
                   JRHtmlExporter exporter = new JRHtmlExporter();//创建对象
               
                   ByteArrayOutputStream oStream = new ByteArrayOutputStream();
               
                 try {
                   JRBeanCollectionDataSour ce ds = new JRBeanCollectionDataSour ce(list);
                   // 用数据填充JasperReport文件
                   JasperPrint jasperPrint = JasperFillManager.fillReport(reportFilePath, parameters, ds);
                 
                   exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,
                                     Boolean.FALSE);
                   // 设置导出JASPER_PRINT
                   exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
                   // 导出编码格式
                   exporter.setParameter(JRHtmlExporterParameter.CHARACTER_ENCODING, "utf-8");
                   // 设置导出流
                   exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, outPut);
                   //报表边框图片设置"report/image?image=",report为你的报表及PX图片所在目录
                   exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "report/image?image=");
                   //执行导出
                   exporter.exportReport();
                   // System.out.println(System.getProperty("user.dir"));
                   String nowpath = System.getProperty("user.dir");
                   String tempdir=nowpath.replace("bin", "webapps");
                 
                   String path = tempdir +"/"+ Jasper_Util.getCode("download_mkdir");
                 
                   System.out.println(tempdir);
                   try {
                     Jasper_Util.checkExist(path);//判断目录是否存在
              } catch (Exception e) {
                     // TODO Auto-generated catch block
                     e.printStackTrace();
              }
                 
                   FileOutputStream outputStream = new FileOutputStream(path+"/"+reportTitle+".html");
                   
                     outputStream.write(outPut.toByteArray());
            
                 } catch (JRException e) {
                     e.printStackTrace();
                   
                 }finally{
                            outPut.flush();
                            outPut.close();
                     }
               
              }
            
            
              public static void generateExcel(String reportTitle, String reportFilePath,List<Object> list) throws IOException {
                 //jdbcCustomerDao = new JdbcCustomerDao();
                     ByteArrayOutputStream outPut = new ByteArrayOutputStream();
                   
                 Map parameters = new HashMap();//参数设定
                 parameters.put("lie", "select * from User");
               
                 //List list = jdbcCustomerDao.getAllCustomer(begCustNo, endCustNo);
               
                 JRXlsExporter exporter = new JRXlsExporter(); // Excel
               
                 ByteArrayOutputStream oStream = new ByteArrayOutputStream();
               
                 try {
                   JRBeanCollectionDataSour ce ds = new JRBeanCollectionDataSour ce(list);
                   //填充数据
                   JasperPrint jasperPrint = JasperFillManager.fillReport(reportFilePath, parameters, ds);
                 
                   exporter.setParameter(JRExporterParameter.JASPER_PRINT,
                                 jasperPrint);
                   exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,
                                 outPut);
                  exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,
                       Boolean.TRUE);// 删除记录最下面的空行
                   exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,
                       Boolean.FALSE);// 删除多余的ColumnHeader
                   exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND,
                       Boolean.FALSE);// 显示边框 
               
                   exporter.exportReport();
                 
                   FileOutputStream outputStream = new FileOutputStream("e:/report1.xls");
                   
                     outputStream.write(outPut.toByteArray());

                 } catch (JRException e) {
                   e.printStackTrace();
               
                 }finally{
                            outPut.flush();
                            outPut.close();
                     }
                }
}
2).action
package unite.action.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import wohai.base.action.BaseAction;
import wohai.base.util.util_jasperreports.Jasper_Util;
import wohai.base.util.util_jasperreports.JrtsUtil;

@SuppressWarnings("serial")
public class Jasper_UpLoadAction extends BaseAction {
     
       private String reportTitle;//报表的名字
       private List sourseList = new ArrayList();
     
     
       //获得下载文件的内容,可以直接读入一个物理文件或从数据库中获取内容
       public InputStream getInputStream() throws Exception {
            
              String nowpath = System.getProperty("user.dir");
              String tempdir=nowpath.replace("bin", "webapps");
              String path = tempdir +"/"+ Jasper_Util.getCode("download_mkdir");
            
               File file = new File(path+"/"+reportTitle+".html");
               if (file.exists()) {
                      InputStream inputStream = new FileInputStream(file);
                               //下载文件
                               return inputStream;
               }
               return null;
       }
     
     
       public static String getDownloadFileName(String name) {
         
             String downFileName = name;
             try {
               downFileName = new String(downFileName.getBytes(), "ISO8859-1");
             } catch (Exception e) {
               e.printStackTrace();
             }
             return downFileName;
       }

       @Override
       public String execute() throws Exception {
              // TODO Auto-generated method stub
              reportTitle = getDownloadFileName(request.getParameter("reportTitle"));
              JrtsUtil.generateHtml(reportTitle,Jasper_Util.getCode("jasper_mkdir"),sourseList);
              return SUCCESS;
       }

     
     
       public String getReportTitle() {
              return reportTitle;
       }

       public void setReportTitle(String reportTitle) {
              this.reportTitle = reportTitle;
       }

       public List getSourseList() {
              return sourseList;
       }

       public void setSourseList(List sourseList) {
              this.sourseList = sourseList;
       }
}

3).用到的辅助工具类


       public static String getCode(String key){
                Locale locale1 = new Locale("zh", "CN");
                 ResourceBundle resb = ResourceBundle.getBundle("jasper", locale1);
                 System.out.println(resb.getString(key));
               
                 return resb.getString(key);
       }
       //.properties配置文件里存放是我要用到的路径
     

       public static void checkExist(String filepath) throws Exception{

             File file=new File(filepath);

             if (file.exists()) {//判断文件目录的存在


             }else {

                     System.out.println("文件夹不存在!3");

                     file.mkdirs();
             }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值