IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 【ireport工具制作报表使用流程】 -> 正文阅读

[大数据]【ireport工具制作报表使用流程】

作者:token annotation punctuation

1.ireport使用说明

ireport 是一款方便实用的报表编辑工具,你可以使用这个工具通过简单的拖拉的形式设计自己需要的报表页面,同时它可以独立连接数据库。如果你想学习如何使用ireport工具你 可以仔细阅读这篇文章。

2.安装包及相关环境下载

由于ireport工具年代已经比较久远,而且不是国内开发的软件,已经被收购所以下载建议不要找官网,可以找百度网盘等别人下载好的链接地址,或者头铁的去官网试一试:

  1. 官网下载地址: ireport官网下载地址
  2. 百度网盘下载地址 百度网盘下载地址
    提取码:j8e4;
  3. 下载完成后,无法直接打开,应为软甲比较老旧不支持jdk1.7以上的jvm环境,所以还需要下载一个jdk1.7,(电脑中有jdk1.7或以下版本的忽略即可)JDK 1.7安装包(Windows 64位)可以在官网上下载,也可以在百度网盘上下载 jdk-7u80-windows-x64.exe。
    链接:jdk1.7下载地址
    提取码:lj89
  4. 以上环境相关安装完成即可打开;

3.快速入门上手

  1. 安装完成后打开软件,首先需要设置数据库连接(这里以Mysql为例,其他类似);在这里插入图片描述
    在这里插入图片描述

  2. 配置完数据库后点击文件=》New,根据报表情况选择对应的模板在这里插入图片描述

在这里插入图片描述
根据指示填写相关信息后点击完成
在这里插入图片描述
进入设计页面,页面右侧会显示属性栏和组件面板栏 左边展示报表设计格式
在这里插入图片描述
其中Detail1是用来存放列表信息的可以存在多个,其余的部分只能存在一个,每一个Detail1都可以编辑一个对应的SQL来获取报表数据。每个模块生成报表后展示如下
在这里插入图片描述
通过使用组件面板的工具设计好报表样式后,我们可以通过工具直接编译预览
首先在最左侧的操作栏中选中你的项目右键找到属性
在这里插入图片描述在属性中找到When No Data这个设置为如图所示,
在这里插入图片描述点击编译后可以进行预览
在这里插入图片描述
在这里插入图片描述
其中Detail1中的信息需要通过SQL来展示,我们需要点击图中按钮位置来进行SQL编写及报表页面中相关报表的变量内容设置。
在这里插入图片描述
在这里插入图片描述
最后一定要注意在你设计完成之后还需要对内容中的字体进行pdf设置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0duYl91w-1652084941143)(https://img-在这里插入代码片blog.csdnimg.cn/3105c0d45dda4efcb0e4c09fe0e674ef.png)]

在属性上找到最后面的PDF相关设置,然后将值设置为如果所示的值。然后通过编译预览功能就可以查看报表。

如何使用代码生成报表

参考以下代码

package com.ntocc.util.ireport;

import com.ntocc.config.RDSConnection;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.export.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Map;

/**
 * @author: luocw
 * @date: 2019/03/04 09:28
 * @Desc: :描述该类的主要功能
 */
@Component
public class IReportUtils {

    private static Connection connection;

    private static Logger logger = LoggerFactory.getLogger(IReportUtils.class);

    /**
     * 获取数据库连接
     * @return
     */
    public static Connection getConnection(){
        String driver = RDSConnection.driver;
        String url = RDSConnection.url;
        String user = RDSConnection.user;
        String pass = RDSConnection.pass;
        try {
            Class.forName(driver);
            Connection con = DriverManager.getConnection(url, user, pass);
            return con;
        }catch(Exception e){
            e. printStackTrace();
            logger.error(e.getMessage());
        }
        return null;
    }

    /**
     * 单例模式
     * @return
     */
    public static Connection getConn(){
        if (connection == null ){
            connection = getConnection();
        }
        return connection;
    }


    /**使用模板和数据库直连模式不安全,不建议使用
     * 导出pdf
     * @param jasperFile
     * @param paramMap
     * @param defaultFileName
     * @param request
     * @param response
     * @throws IOException
     * @throws JRException
     */
    public static void exportToPdf(String jasperFile, Map<String,Object> paramMap, String defaultFileName, HttpServletRequest request,
                                   HttpServletResponse response) throws IOException, JRException {
        if (StringUtils.isEmpty(defaultFileName)){
            defaultFileName =  "export.pdf";
        }else {
            defaultFileName = defaultFileName + ".pdf";
        }
        String fileName = new String(defaultFileName.getBytes("GBK"), "ISO8859_1");
        response.setHeader("Content-disposition", "attachment; filename="
                + fileName);
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperFile,paramMap, getConn());
        ServletOutputStream ouputStream = response.getOutputStream();
        JasperExportManager.exportReportToPdfStream(jasperPrint, ouputStream);
        ouputStream.flush();
        ouputStream.close();
    }

    /**
     * 导出doc文件
     * @param jasperFile
     * @param paramMap
     * @param defaultFileName
     * @param request
     * @param response
     * @throws IOException
     * @throws JRException
     */
    public static void exportToDoc(String jasperFile, Map<String,Object> paramMap, String defaultFileName, HttpServletRequest request,
                                   HttpServletResponse response) throws IOException, JRException {
        if (StringUtils.isEmpty(defaultFileName)){
            defaultFileName =  "export.doc";
        }else {
            defaultFileName = defaultFileName + ".doc";
        }
        String fileName = new String(defaultFileName.getBytes("GBK"), "ISO8859_1");
        response.setHeader("Content-disposition", "attachment; filename="
                + fileName);
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperFile,paramMap, getConn());
        //设置导出输出流
        JRExporter exporter = new JRRtfExporter();
        exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
        exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,
                response.getOutputStream());
        exporter.exportReport();
    }


    /**
     * 导出html文件
     * @param jasperFile
     * @param paramMap
     * @param request
     * @param response
     * @throws IOException
     * @throws JRException
     */
    public static void exportToHtml(String jasperFile, Map<String,Object> paramMap, HttpServletRequest request,
                                   HttpServletResponse response) throws IOException, JRException {
        response.setContentType("text/html");
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperFile,paramMap, getConn());
        ServletOutputStream ouputStream = response.getOutputStream();
        JRHtmlExporter exporter = new JRHtmlExporter();
        exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,
                Boolean.FALSE);
        exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
        exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "UTF-8");
        exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);
        //设置图片文件存放路径,此路径为服务器上的绝对路径
        String imageDIR =request.getSession().getServletContext().getRealPath("/");
        exporter.setParameter(JRHtmlExporterParameter.IMAGES_DIR_NAME, imageDIR);

        //设置图片请求URI
        String imageURI = request.getContextPath() + "/";
        exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, imageURI);

        //设置导出图片到图片存放路径
        exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.TRUE);
        exporter.setParameter(JRHtmlExporterParameter.IS_OUTPUT_IMAGES_TO_DIR, Boolean.TRUE);
        exporter.exportReport();

        ouputStream.flush();
        ouputStream.close();
    }


    /**
     * 导出xls文件
     * @param jasperFile
     * @param paramMap
     * @param defaultFileName
     * @param request
     * @param response
     * @throws IOException
     * @throws JRException
     */
    public static void exportToExcel(String jasperFile, Map<String,Object> paramMap, String defaultFileName, HttpServletRequest request,
                                   HttpServletResponse response) throws IOException, JRException {
        if (StringUtils.isEmpty(defaultFileName)){
            defaultFileName =  "export.xls";
        }else {
            defaultFileName = defaultFileName + ".xls";
        }
        String fileName = new String(defaultFileName.getBytes("GBK"), "ISO8859_1");
        response.setHeader("Content-disposition", "attachment; filename="
                + fileName);
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperFile,paramMap, getConn());
        //设置导出输出流
        ServletOutputStream ouputStream = response.getOutputStream();
        JRXlsExporter exporter = new JRXlsExporter();
        exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
        exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);
        // 删除记录最下面的空行
        exporter.setParameter(
                JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,
                Boolean.TRUE);
        // 删除多余的ColumnHeader
        exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,
                Boolean.FALSE);
        // 显示边框
        exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND,
                Boolean.FALSE);
        exporter.exportReport();
        ouputStream.flush();
        ouputStream.close();
    }



    /**
     * 导出pdf
     * @param jasperFile
     * @param paramMap
     * @param defaultFileName
     * @param request
     * @param response
     * @throws IOException
     * @throws JRException
     */
    public static void exportToPdf(String jasperFile, Map<String,Object> paramMap, String defaultFileName, HttpServletRequest request,
                                   HttpServletResponse response, JRDataSource dataSource) throws IOException, JRException {
        if (StringUtils.isEmpty(defaultFileName)){
            defaultFileName =  "export.pdf";
        }else {
            defaultFileName = defaultFileName + ".pdf";
        }
        String fileName = new String(defaultFileName.getBytes("GBK"), "ISO8859_1");
        response.setHeader("Content-disposition", "attachment; filename="
                + fileName);
        JasperPrint jasperPrint = new JasperPrintWithDataSource(paramMap, jasperFile, dataSource).getJasperPrint();
        ServletOutputStream ouputStream = response.getOutputStream();
        JasperExportManager.exportReportToPdfStream(jasperPrint, ouputStream);
        ouputStream.flush();
        ouputStream.close();
    }

    /**
     * 导出doc文件
     * @param jasperFile
     * @param paramMap
     * @param defaultFileName
     * @param request
     * @param response
     * @throws IOException
     * @throws JRException
     */
    public static void exportToDoc(String jasperFile, Map<String,Object> paramMap, String defaultFileName, HttpServletRequest request,
                                   HttpServletResponse response, JRDataSource dataSource) throws IOException, JRException {
        if (StringUtils.isEmpty(defaultFileName)){
            defaultFileName =  "export.doc";
        }else {
            defaultFileName = defaultFileName + ".doc";
        }
        String fileName = new String(defaultFileName.getBytes("GBK"), "ISO8859_1");
        response.setHeader("Content-disposition", "attachment; filename="
                + fileName);
        JasperPrint jasperPrint = new JasperPrintWithDataSource(paramMap, jasperFile, dataSource).getJasperPrint();

//        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperFile,paramMap, getConn());
        //设置导出输出流
        JRExporter exporter = new JRRtfExporter();
        exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
        exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,
                response.getOutputStream());
        exporter.exportReport();
    }


    /**
     * 导出html文件
     * @param jasperFile
     * @param paramMap
     * @param request
     * @param response
     * @throws IOException
     * @throws JRException
     */
    public static void exportToHtml(String jasperFile, Map<String,Object> paramMap, HttpServletRequest request,
                                    HttpServletResponse response, JRDataSource dataSource) throws IOException, JRException {
        response.setContentType("text/html");
        JasperPrint jasperPrint = new JasperPrintWithDataSource(paramMap, jasperFile, dataSource).getJasperPrint();
//        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperFile,paramMap, getConn());
        ServletOutputStream ouputStream = response.getOutputStream();
        JRHtmlExporter exporter = new JRHtmlExporter();
        exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,
                Boolean.FALSE);
        exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
        exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "UTF-8");
        exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);
        //设置图片文件存放路径,此路径为服务器上的绝对路径
        String imageDIR =request.getSession().getServletContext().getRealPath("/");
        exporter.setParameter(JRHtmlExporterParameter.IMAGES_DIR_NAME, imageDIR);

        //设置图片请求URI
        String imageURI = request.getContextPath() + "/";
        exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, imageURI);

        //设置导出图片到图片存放路径
        exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.TRUE);
        exporter.setParameter(JRHtmlExporterParameter.IS_OUTPUT_IMAGES_TO_DIR, Boolean.TRUE);
        exporter.exportReport();

        ouputStream.flush();
        ouputStream.close();
    }


    /**
     * 导出xls文件
     * @param jasperFile
     * @param paramMap
     * @param defaultFileName
     * @param request
     * @param response
     * @throws IOException
     * @throws JRException
     */
    public static void exportToExcel(String jasperFile, Map<String,Object> paramMap, String defaultFileName, HttpServletRequest request,
                                     HttpServletResponse response, JRDataSource dataSource) throws IOException, JRException {
        if (StringUtils.isEmpty(defaultFileName)){
            defaultFileName =  "export.xls";
        }else {
            defaultFileName = defaultFileName + ".xls";
        }
        String fileName = new String(defaultFileName.getBytes("GBK"), "ISO8859_1");
        response.setHeader("Content-disposition", "attachment; filename="
                + fileName);
        JasperPrint jasperPrint = new JasperPrintWithDataSource(paramMap, jasperFile, dataSource).getJasperPrint();
        //设置导出输出流
        ServletOutputStream ouputStream = response.getOutputStream();
        JRXlsExporter exporter = new JRXlsExporter();
        exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
        exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);
        // 删除记录最下面的空行
        exporter.setParameter(
                JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,
                Boolean.TRUE);
        // 删除多余的ColumnHeader
        exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,
                Boolean.FALSE);
        // 显示边框
        exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND,
                Boolean.FALSE);
        exporter.exportReport();
        ouputStream.flush();
        ouputStream.close();
    }

}
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-11 16:30:44  更:2022-05-11 16:33:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:03:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码