将jasper文件转化为报表输出的代码

来源:互联网 发布:淘宝开店的流程是什么? 编辑:程序博客网 时间:2024/05/16 11:54

不推荐用jsp, 用servlet 比较好,我这里有流程性的,你自己看着用吧,这东西用了2年,没发现问题。

通用的导出类,支持html,Excel,PDF三种

public class ReportType {

  
public static int HTML = 1;

  
public static int EXCEL = 2;

  
public static final int PDF = 3;

  
public static void export(HttpServletResponse response, JasperPrint jp, int type, String filename) throws Exception {
    JRExporter exporter 
= null;
    
if (type == HTML) {
      exporter 
= new JRHtmlExporter();
      exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, 
false);
      exporter.setParameter(JRHtmlExporterParameter.BETWEEN_PAGES_HTML, 
"");
      
// exporter.setParameter(JRHtmlExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
    }
 else if (type == EXCEL) {
      exporter 
= new JRXlsExporter();
      response.setContentType(
"application/vnd.ms-excel");
      response.addHeader(
"Content-Disposition"new String(("attachment; filename=" + filename + ".xls").getBytes("GBK"), "ISO-8859-1"));
      exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
      
// exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
    }
 else if (type == PDF) {
      exporter 
= new JRPdfExporter();
      response.setContentType(
"application/pdf");
      response.addHeader(
"Content-Disposition"new String(("attachment; filename=" + filename + ".pdf").getBytes("GBK"), "ISO-8859-1"));
    }
 else {
      
return;
    }

    exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, 
"GBK");
    exporter.setParameter(JRExporterParameter.JASPER_PRINT, jp);
    exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, response.getOutputStream());
    exporter.exportReport();
  }

}

 使用方法

String jasper = "jasper/saler/salerMonthSummary.jasper"// 你的jasper文件地址
String filename = "营销中心业务员" + from + "-" + to + "销售汇总"// 对于excel等需要下载的文件名

// 各种参数设置好
Map map = new HashMap();
map.put(
"YearFrom", from.getYear());
map.put(
"MonthFrom", from.getMonth());
map.put(
"YearTo", to.getYear());
map.put(
"MonthTo", to.getMonth());


// 读取jasper
JasperReport jr = (JasperReport) JRLoader.loadObjectFromLocation(jasper);

// 填充数据
JasperPrint jp = JasperFillManager.fillReport(jr, map, null);

// 判断是否正常
List<JRPrintPage> pages = jp.getPages();
if (pages.size() == 0{
  
// 没有数据
  return;
}


ReportType.export(response, jp, ReportType.EXCEL, filename);