Jsp页面调用Jasperreport报表模板生成pdf、excel、html

一、 生成pdf

<%@ page contentType="application/pdf;charset=UTF-8"%>
<%@ page import="net.sf.jasperreports.engine.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.io.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="net.sf.jasperreports.engine.JasperFillManager" %>
<%@ page import="net.sf.jasperreports.engine.JasperPrint"%>
<%@ page import="net.sf.jasperreports.engine.JRException"%>
<%@ page import="net.sf.jasperreports.engine.JasperRunManager"%>
<%@page import="com.demo.customer.domain.Purchasepo"%>
<!-- 调用连接池 -->
<%@ page language="java" import="com.demo.customer.domain.Exportso,javax.sql.DataSource,customer.ConnectionFactory" %>
<!-- 动态获取项目路径 -->
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%
String bg_no = (String)  request.getSession().getAttribute("report_no");//点击预览按钮时将合同号作为参数传入报表
String rowid =bg_no;//初始化变量
System.out.println(bg_no);
String rowid2 = basePath+"/pic/softexlogo.jpg";//初始化变量
String rowid3 = basePath+"/pic/gz.jpg";//初始化变量
//报表编译之后生成的.jasper文件的存放位置
File reportFile = new
//报表编译之后生成的.jasper文件的存放位置
File(this.getServletContext().getRealPath("/report/report_dzmxd.jasper"));
//String url="jdbc:sqlserver://192.168.1.84:1433;databaseName=p_test";//单独链接数据库,已弃用
//Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//单独链接数据库,已弃用
Map parameters = new HashMap();
parameters.put("bg_no", rowid);
parameters.put("logo", rowid2);
parameters.put("gz", rowid3);
//Connection conn = DriverManager.getConnection(url, "sa","123456");//单独链接数据库,已弃用
System.out.println("---------conn pdf-------------");
DataSource dataSource =ConnectionFactory.getDataSource();//调用连接池
Connection connection=dataSource.getConnection();//调用连接池
System.out.println("---------Jasper begin pdf-------------");
byte[]
bytes=JasperRunManager.runReportToPdf(reportFile.getPath(),parameters,connection);
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream outStream = response.getOutputStream();
outStream.write(bytes,0,bytes.length);
outStream.flush();
outStream.close();
out.clear();
out = pageContext.pushBody();
connection.close();
reportFile  = null;
System.out.println("---------Jasper end pdf-------------");
%>

二、 生成excel

<%@ page contentType="application/vnd.ms-excel;charset=UTF-8"%>
<%@ page import="net.sf.jasperreports.engine.JasperFillManager"%>
<%@ page import="net.sf.jasperreports.engine.JasperPrint"%>
<%@ page import="net.sf.jasperreports.engine.JRException"%>
<%@ page import="net.sf.jasperreports.engine.JRExporterParameter"%>
<%@ page
    import="net.sf.jasperreports.engine.export.JRXlsExporterParameter"%>
<%@ page import="net.sf.jasperreports.engine.export.JRXlsExporter"%>
<%@ page import="java.util.*"%>
<%@ page import="java.io.*"%>
<%@ page import="java.sql.*"%>
<%@page import="com.demo.customer.domain.Purchasepo"%>
<!-- 调用连接池 -->
<%@ page language="java"
    import="com.demo.customer.domain.Exportso,javax.sql.DataSource,customer.ConnectionFactory"%>
<!-- 动态获取项目路径 -->
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":"
            + request.getServerPort() + path + "/";
%>
<%
    String bg_no = (String) request.getSession().getAttribute("report_no");//点击预览按钮时将合同号作为参数传入报表
    String rowid = bg_no;//初始化变量
    System.out.println(bg_no);
    String rowid2 = basePath + "/pic/softexlogo.jpg";//初始化变量
    String rowid3 = basePath + "/pic/gz.jpg";//初始化变量
    //报表编译之后生成的.jasper 文件的存放位置
    File reportFile = new File(application.getRealPath("/report/report_dzmxd.jasper"));
    //这个是用来联接我的SQL Server 的JDBC URL
    //String url="jdbc:sqlserver://192.168.1.84:1433;databaseName=p_test";//单独链接数据库,已弃用
    //Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//单独链接数据库,已弃用
    //传递报表中用到的参数值
    Map parameters = new HashMap();
    parameters.put("bg_no", rowid);
    parameters.put("logo", rowid2);
    parameters.put("gz", rowid3);
    //连接到数据库
    //Connection conn = DriverManager.getConnection(url,"sa", "123456");//单独链接数据库,已弃用
    //在控制台显示一下报表文件的物理路径
    System.out.println(reportFile.getPath());
    try {
        // fill
        System.out.println("---------conn-------------");
        DataSource dataSource = ConnectionFactory.getDataSource();//调用连接池
        Connection connection = dataSource.getConnection();//调用连接池
        JasperPrint jasperPrint = JasperFillManager.fillReport(reportFile.getPath(),
                parameters, connection);
        // excel输出
        System.out.println("---------Jasper begin-------------");
        ByteArrayOutputStream oStream = new ByteArrayOutputStream();
        JRXlsExporter exporter = new JRXlsExporter();
        exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
        exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, oStream);
        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.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE); //在导出的excel文件中将数字保存为数字类型
        //   exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "GB2312");// 显示边框
        //   jrXlsExporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "GB2312");
        exporter.exportReport();
        byte[] bytes = oStream.toByteArray();
        if (bytes != null && bytes.length > 0) {
            response.reset();
            System.out.println("---------Jasper end excel-------------");
            response.setContentType("application/vnd.ms-excel");
            //response.setHeader("Content-Disposition", "attachment;filename=\"" + reportFile+ ".XLS\"");//设置导出文件的名称和后缀格式
            response.setContentLength(bytes.length);
            ServletOutputStream ouputStream = response.getOutputStream();
            ouputStream.write(bytes, 0, bytes.length);
            ouputStream.flush();
            ouputStream.close();
        } else {
            out.print("bytes were null!");
        }
        connection.close();
        oStream.close();
        reportFile  = null;
    } catch (JRException ex) {
        out.print("Jasper Output Error:" + ex.getMessage());
    }
    out.clear();
    out = pageContext.pushBody();
%>

三、 生成html

<%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding="UTF-8"%>
<%@ page
    import="java.io.*,
            net.sf.jasperreports.engine.*,
            net.sf.jasperreports.engine.util.*,
            java.util.*,java.sql.*,
            net.sf.jasperreports.engine.export.*"%>
<%@page import="com.demo.customer.domain.Purchasepo"%>
<!-- 调用连接池 -->
<%@ page language="java" import="com.demo.customer.domain.Exportso,javax.sql.DataSource,customer.ConnectionFactory" %>
<!-- 动态获取项目路径 -->
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>预览</title>
    </head>
 <body>
 <%
 String invno = (String)  request.getSession().getAttribute("report_no");//点击预览按钮时将合同号作为参数传入报表
 String rowid =invno;//初始化变量
 String rowid2 = basePath+"/pic/softexlogo.jpg";//初始化变量
 String rowid3 = basePath+"/pic/gz.jpg";//初始化变量
     File reportFile = new File(application.getRealPath("/report/report_dzfp.jasper"));
     //JasperReport jasperReport = (JasperReport) JRLoader.loadObject(reportFile.getPath());
     JasperReport jasperReport = (JasperReport) JRLoader.loadObjectFromFile(reportFile.getPath());
     Map parameters = new HashMap();
     parameters.put("invno", rowid);
     parameters.put("logo", rowid2);
     parameters.put("gz", rowid3);
     System.out.println("---------conn html-------------");
     //Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//单独链接数据库,已弃用
     //Connection conn = DriverManager.getConnection("jdbc:sqlserver://192.168.1.84:1433;databaseName=p_test", "sa", "123456");//单独链接数据库,已弃用
     DataSource dataSource =ConnectionFactory.getDataSource();//调用连接池
     Connection connection=dataSource.getConnection();//调用连接池
     System.out.println("---------Jasper begin html-------------");
     JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, connection);
     JRHtmlExporter exporter = new JRHtmlExporter();
     exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
     exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);
     exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.FALSE);
     exporter.exportReport();
     out.flush();    
     connection.close();
     System.out.println("---------Jasper end html-------------");
 %>
 </body>
 </html>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值