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
    评论
JasperReport是一个强大的报表生成工具,支持生成多种格式的报表,包括PDFExcel、Word等。下面是使用JasperReport生成Excel报表的简单步骤: 1. 创建报表模板:使用JasperStudio创建报表模板,选择Excel作为输出格式,并设计报表布局和样式。 2. 定义数据源:定义报表所需的数据源,可以是数据库、XML文件等。 3. 编写Java代码:使用Java代码调用JasperReport API,读取数据源并将数据填充到报表模板中,最终生成Excel报表。 下面是一个简单的示例代码: ```java // 加载报表模板 JasperReport jasperReport = JasperCompileManager.compileReport("report.jrxml"); // 定义数据源 JRDataSource dataSource = new JREmptyDataSource(); // 填充数据并生成Excel报表 JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, dataSource); JRXlsxExporter exporter = new JRXlsxExporter(); exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); exporter.setExporterOutput(new SimpleOutputStreamExporterOutput("report.xlsx")); SimpleXlsxReportConfiguration configuration = new SimpleXlsxReportConfiguration(); configuration.setOnePagePerSheet(true); exporter.setConfiguration(configuration); exporter.exportReport(); ``` 在这个示例中,我们首先加载报表模板,然后定义一个空的数据源。接下来,使用JasperFillManager将数据源填充到报表模板中,并生成一个JasperPrint对象。最后,我们使用JRXlsxExporter将JasperPrint对象导出为Excel文件。在导出Excel文件时,我们可以通过SimpleXlsxReportConfiguration设置导出选项,例如每页一个工作表等。 需要注意的是,JasperReport生成Excel报表的效果可能不如专业的Excel工具,例如Microsoft Excel或LibreOffice Calc。如果需要生成复杂的Excel报表,建议使用专业的Excel工具。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值