ireport报表以及打印


import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.common.base.BaseAction;

import net.sf.jasperreports.engine.JRDataSource;
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.JasperReport;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
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.JRRtfExporter;
import net.sf.jasperreports.engine.export.JRXlsExporter;
import net.sf.jasperreports.engine.util.JRLoader;

public class ReportPint extends BaseAction{
 private HttpServletResponse resp=this.getResponse();
 
 
 /***
  * 报表打印
  * jasperName 模板名字
  * list单据明细
  * parameters单据
  * printType打印类型
  */
 public void print(String jasperName,List list,Map parameters,String printType){
  try{
   String root_path = this.getServletContext().getRealPath("/");
   root_path = root_path.replace('//', '/');
   String reportFilePath = root_path + "WEB-INF/classes/com/zrjxc/system/util/"+jasperName+".jasper";
   JRDataSource dataSource = new JRBeanCollectionDataSource(list);
   //parameters.put("SUBREPORT_DIR", root_path + "WEB-INF/classes/com/zrjxc/system/util/");//设置子报表路径
   JasperReport report = (JasperReport)JRLoader.loadObject(reportFilePath);
   JasperPrint jasperPrint = JasperFillManager.fillReport(report, parameters, dataSource);
         OutputStream ouputStream = resp.getOutputStream(); 
         resp.setContentType("application/"+printType);//导出类型(pdf,xls,html)
         resp.setCharacterEncoding("UTF-8"); 
         resp.setHeader("Content-Disposition", "attachment; filename=/""+ URLEncoder.encode(jasperName, "UTF-8") + "."+printType+"/"");//生成文件类型(pdf,xls,html) 
         this.printStyle(jasperPrint,ouputStream,printType);//控制打印格式
         ouputStream.close(); 
  }catch(Exception ex){
   ex.printStackTrace();
  }
 }
 
 
 //打印格式
 public void printStyle(JasperPrint jasperPrint,OutputStream ouputStream,String printType) throws JRException{
  if(printType.equals("pdf")){
   // 使用JRPdfExproter导出器导出pdf 
         JRPdfExporter exporter = new JRPdfExporter(); 
         exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
         exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream); 
         exporter.exportReport();
  }else if(printType.equals("xls")){
   //使用JRXlsExporter导出器导出excel
         JRXlsExporter xlsExporter=new JRXlsExporter();
         xlsExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
         xlsExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);
         xlsExporter.exportReport();
  }else if(printType.equals("html")){
   //使用JRHtmlExporter导出器导出html
         JRHtmlExporter htmlExporter=new JRHtmlExporter();
         htmlExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
         htmlExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);
         htmlExporter.setParameter(JRHtmlExporterParameter.CHARACTER_ENCODING, "utf-8");
         htmlExporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "servlets/image?image=");
         htmlExporter.exportReport();
  }else{
   //使用JRRtfExporter导出器导出word
   JRRtfExporter rtfExporter=new JRRtfExporter();
   rtfExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
   rtfExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);
   rtfExporter.exportReport();
  }
 }
 
 
 

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值