ireport简单报表打印


目录
1. ireport连接Oracle数据库
2. ireport简单报表打印

1.ireport面板属性
1.title:只在整个报表的第一页的最上面部分显示,除了第一页外,不管报表有几个页面,其余的页面都不会再出现该部分的内容。
2.pageHeader:将会在整个报表中的每一个页面中都会出现,显示在位置在页面的上部,如果是报表的第一页,pageHeader 中的内容将显示在title段下面,除了第一页以外的其他所有页面中pageHeader 中的内容将在显示在页面的最上端。
3.columnHeader:针对detail段的表头段,一般情况下在这个段中画报表中列的列标题。每页均会出现一次。从字面意思就可以理解这是一个表格的表格头。
4.detail:报表内容段,在这个段中设计报表中需要重复出现的内容,detail 段中的内容每页都会出现。
5. columnFooter:detail段的结尾,每页只会出现一次。
6.pageFooter:显示在所在页面的最下端,每页都显示,最后一页由lastPageFooter替代。
7.lastPageFooter:最后一页页尾段内容,只在最后一页出现一次。
8. summary:表格的合计段,出现在整个报表的最后一页中的detail段的后面,一般用来统计报表中某个或某几个字段的合计值。
2. 本文介绍在ireport中写sql语句,没有配置javaBean 如图
第一步 在ireport中编写sql语句
这里写图片描述
这里写图片描述
第二步 左边导航栏属性介绍 如图
1.Parameters 参数 打印显示报表条件,就想java中查询条件
2.Fileds 字段 就是sql中有哪些字段信息
3.Variables 变量对象,该变量也有自己的属性
4.下面就是模板对象,上面有详细的介绍
这里写图片描述
第三步 右边组件面板属性介绍 如图
1.Text Fleid 动态字段 数据是动态
2. Static Text 静态字段 就是值是固定
这里写图片描述
3. java 后台代码 我是居于servlet打印,下面是写了一个ireportDemo 如图
1.数据连接我是servlet连接
2.ireport中要使用的jar包
这里写图片描述
jar包总共分为三类
1.ireport中jar包
2.依赖第三方jar包
3.需要引用字体的jar
这里写图片描述
第一步 web.xml 配置 如下代码

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <!--ireportservlet 控制器  -->
    <servlet>
        <servlet-name>ireportServlet</servlet-name>
        <servlet-class>com.zlp.ireport.IreportServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ireportServlet</servlet-name>
        <url-pattern>/ireport</url-pattern>
    </servlet-mapping>

   <!--加载访问页面  -->
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

</web-app>

第二步 数据库连接 如下代码

package com.zlp.util;

import java.sql.Connection;
import java.sql.DriverManager;


/**
 *  描述 : 连接数据库驱动
 *  @author zlp 
 *  @date 2017年12月29日10:39:47
 */
 public class ConnectionUtils {

     private static Connection connection = null;

     public static Connection getConnection() {
            try {
                Class.forName("oracle.jdbc.driver.OracleDriver");// 加载Oracle驱动程序
                System.out.println("开始尝试连接数据库!");
                String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";// 127.0.0.1是本机地址,orcl是Oracle的sid
                String user = "dms_pro";// 用户名,系统默认的账户名
                String password = "dms_pro";// 你安装时选设置的密码
                connection = DriverManager.getConnection(url, user, password);// 获取连接
                System.out.println("连接成功!");
            } catch (Exception e) {
                e.printStackTrace();
            }
            return connection;
        }

     // 测试001
     public static void main(String[] args) {
         //connection = getConnection();
    }

}

第三步 ireportServlet控制器代码 如下代码

  package com.zlp.ireport;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.export.JRHtmlExporter;
import net.sf.jasperreports.engine.export.JRHtmlExporterParameter;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.j2ee.servlets.ImageServlet;

import org.apache.commons.lang.StringUtils;

import com.zlp.util.ConnectionUtils;
/**
 * 描述 :ireport 打印
 * @date : 2017年12月30日15:34:03
 * @author : zlp
 * 
 */
@SuppressWarnings("serial")
public class IreportServlet extends HttpServlet {




    @Override
    public void init(){

    }
    /**
     * 描述 :后台调用方法
     * @date : 2017年12月30日15:34:03
     * 
     */
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        // 调用不同的方法
        if("EMPLOYEE".equals(req.getParameter("report").toUpperCase())){
            printEmployee(req,resp);
        }   

    }
     /**
     * 描述 :打印PDF员工信息(单个打印)
     * @date : 2017年12月30日15:34:03
     * 
     */
    private void printEmployee(HttpServletRequest req, HttpServletResponse resp) {

        String rpt=req.getParameter("rpt");

        if(StringUtils.isNotBlank(rpt)){
            if("PDF".equals(rpt.toUpperCase())){
                try {
                    //获取数据库连接
                    Connection connection = ConnectionUtils.getConnection();
                    java.io.InputStream is = this.getServletContext().getResourceAsStream("/WEB-INF/ireportfiles/employee.jasper");
                    Map<String, Object> parameters = new HashMap<String, Object>();
                    String code = req.getParameter("code").toString();
                    parameters.put("CODE", code);
                    JasperReport jasperReport = (JasperReport) JRLoader.loadObject(is);
                    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, connection);
                    resp.setContentType("application/pdf");
                    ServletOutputStream ouputStream = resp.getOutputStream();
                    JasperExportManager.exportReportToPdfStream(jasperPrint,ouputStream);
                    ouputStream.flush();
                    ouputStream.close();
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            }if("HTML".equals(rpt.toUpperCase())){
                try{
                    Connection connection = ConnectionUtils.getConnection();
                    java.io.InputStream is = this.getServletContext().getResourceAsStream("/WEB-INF/ireportfiles/employeeToHtml.jasper");
                    Map<String, Object> parameters = new HashMap<String, Object>();
                    String code = req.getParameter("code").toString();
                    parameters.put("CODE", code);

                    JasperReport jasperReport = (JasperReport) JRLoader.loadObject(is);
                    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, connection);
                    resp.setContentType("text/html; charset=GB2312");
                    PrintWriter printWriter = resp.getWriter();
                    JRHtmlExporter jRHtmlExporter = new JRHtmlExporter();
                    HttpSession session = req.getSession();
                    Map imagesMap = new HashMap();
                    session.setAttribute("IMAGES_MAP", imagesMap);
                    req.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);
                    jRHtmlExporter.setParameter(JRExporterParameter.JASPER_PRINT,jasperPrint);
                    jRHtmlExporter.setParameter(JRExporterParameter.OUTPUT_WRITER,printWriter);
                    jRHtmlExporter.setParameter(JRHtmlExporterParameter.IMAGES_MAP, imagesMap);
                    jRHtmlExporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "GB2312"); 
                    jRHtmlExporter.setParameter(JRHtmlExporterParameter.IMAGES_URI,"image?image=");
                    jRHtmlExporter.setParameter(JRHtmlExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,Boolean.TRUE);
                    jRHtmlExporter.exportReport();      
                    printWriter.close();

                }catch(Exception ex){
                    ex.printStackTrace();
                }
            }
        }
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        this.doPost(req, resp);
    }

}

第四步 前台代码ireportDemo.jsp 如下代码

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
 <%
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>Insert title here</title>
<script type="text/javascript" src="../js/jquery-2.1.1.js"></script>
</head>

 <script type="text/javascript">
          function clicke(){
                 var code = $("#code").val();
                 var path = "http://localhost:8090/iReprotDemo/ireport"
                 window.open(path+'?rpt=pdf&report=employee&code='+code);
         }

         function clickeHtml(){
                 var code = $("#code").val();
                 var path = "http://localhost:8090/iReprotDemo/ireport"
                 window.open(path+'?rpt=html&report=employee&code='+code);
         }
</script>
<body>
      <div>
             <span>员工编号:</span>
             <input type="text" name="fname" id= "code"/>
      </div>
      <input type="button" onClick="clicke()" value="PDF打印"/>
       <input type="button" onClick="clickeHtml()" value="HTML打印"/>

</body>
</html>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值