Springboot 集成 Ureport2 导出Excel报表、生成PDF文件

这篇具有很好参考价值的文章主要介绍了Springboot 集成 Ureport2 导出Excel报表、生成PDF文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.ureport 介绍:

    文档视频教程地址:

2. 如何在springboot 项目中实现各种报表导出、PDF文件导出

2.1使用IDEA创建maven工程 

 2.2添加yml配置信息

application.yml:

2.3添加引用UReport2的Spring配置文件context.xml 

2.4添加property文件

2.5新建webapp目录,新建WEB-INF

2.7 创建启动类 

 2.8 新建 ureport 数据源类

再次 重启项目

 2.9 配置ureport数据源

2.9.1新建数据源

 2.9.2 添加数据集

2.9.3设计模板

3.0 新建导出excel、pdf公共类

3.1 新建测试类


1.ureport 介绍:

       UReport2是一款高性能的架构在Spring之上纯Java报表引擎,通过迭代单元格可以实现任意复杂的中国式报表。
       在UReport2中,提供了全新的基于网页的报表设计器,可以在Chrome、Firefox、Edge等各种主流浏览器运行(IE浏览器除外),打开浏览器即可完成各种复杂报表的设计制作。

      UReport2是第一款基于Apache-2.0协议开源的中式报表引擎。

    文档视频教程地址:

  1. BSDN WIKI: http://wiki.bsdn.org/display/UR/ureport2+Home
  2. w3cschool: https://www.w3cschool.cn/ureport

2. 如何在springboot 项目中实现各种报表导出、PDF文件导出

2.1使用IDEA创建maven工程 

打开idea,New Project选择Maven Archetype ,创建web工程

ureport2,pdf,java,spring boot,excel

ureport2,pdf,java,spring boot,excel

右键新建Module 

 ureport2,pdf,java,spring boot,excel

    工程是这样的:   ureport2,pdf,java,spring boot,excel

 设置一下工程:

ureport2,pdf,java,spring boot,excel

ureport2,pdf,java,spring boot,excel pom.xml变灰了,需要设置一下,把这个勾选去掉,点击“应用”

ureport2,pdf,java,spring boot,excel

 添加 springboot、ureport、数据库相关的依赖 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>SpringBootDemo</artifactId>
        <groupId>org.springboot.demo</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>ureport</artifactId>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot</artifactId>
            <version>2.1.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
            <version>2.1.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.bstek.ureport</groupId>
            <artifactId>ureport2-console</artifactId>
            <version>2.2.9</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.20</version>
        </dependency>
        <dependency>
            <groupId>commons-configuration</groupId>
            <artifactId>commons-configuration</artifactId>
            <version>1.8</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.1.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.6</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.6</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.21</version>
        </dependency>
 <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.3</version>
        </dependency>

        <!--slf4j-Log4j驱动包  会自动添加4个对应包 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.6.6</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.16</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
            <version>1.6.6</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.22</version>
        </dependency>

    </dependencies>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-releases</id>
            <name>Spring Releases</name>
            <url>https://repo.spring.io/libs-release</url>
        </pluginRepository>
    </pluginRepositories>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

</project>

 2.2添加yml配置信息

application.yml:

server:
  port: 8090
  servlet:
    context-path:
spring:
  http:
    encoding:
      force: true
      enabled: true
      charset: UTF-8
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false&allowMultiQueries=true&nullNamePatternMatchesAll=true
    username: root
    password: 123456
    type: com.alibaba.druid.pool.DruidDataSource

  resources:
    static-locations: classpath:/,classpath:/static/

2.3添加引用UReport2的Spring配置文件context.xml 

放在resources

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">

    <!-- 创建context.xml是第六步,引入ureport2报表xml配置文件 -->
    <import resource="classpath:ureport-console-context.xml" />
    <bean id="propertyConfigurer" parent="ureport.props">
        <property name="location">
            <value>classpath:config.properties</value>
        </property>
    </bean>
</beans>

2.4添加property文件

config.properties

#配置文件系统对应的报表文件地址
ureport.fileStoreDir=D:/work/ForTest/SpringBootDemo/ureport/src/main/webapp/WEB-INF/ureportfiles
# 是否禁用
ureport.disableFileProvider=false
ureport.debug=true
ureport.disableHttpSessionReportCache=false
# 配置ureport根路径
ureport.contextPath=/ureport

2.5新建webapp目录,新建WEB-INF

在WEB-INF下新建ureportfiles目录存放报表模板文件

ureport2,pdf,java,spring boot,excel

ureport2,pdf,java,spring boot,excel

2.7 创建启动类 

Application.java
package org.springboot.demo;

import com.bstek.ureport.console.UReportServlet;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ImportResource;

@SpringBootApplication
@ImportResource("classpath:context.xml")
public class Application {
    public static void main(String[] args) {

       try {
           SpringApplication.run(Application.class, args);
       }catch (Exception e){
           System.out.println(e.getMessage());
       }
    }
    // ureport2使用到servlet
    @Bean
    public ServletRegistrationBean buildUReportServlet(){
        return new ServletRegistrationBean(new UReportServlet(),"/ureport/*");
    }
}

 执行启动 点击Application.java 右键启动项目

ureport2,pdf,java,spring boot,excel

 浏览器输入:http://localhost:8090/ureport/designer

就可以访问到ureport 模板设计页面了

ureport2,pdf,java,spring boot,excel

 2.8 新建 ureport 数据源类

新建 ureportSource.java
package org.springboot.demo.util;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

@Component("ureportSource")
public class ureportSource {
    /**
     *
     * @param dsName
     * @param datasetName
     * @param parameters
     * @return
     */
    public List<Map<String, Object>> usrInfo(String dsName, String datasetName, Map<String, Object> parameters) {
        List<Map<String, Object>> mapList = new ArrayList<>();
        mapList.add(parameters);
        return mapList;
    }
}

新建实体类

user.java

package org.springboot.demo.entity;

import lombok.Data;
import java.io.Serializable;
@Data
public class user implements Serializable{
    private static final long serialVersionUID = -1518203115685933730L;
    private String userName;
    private String birthDate;
    private String sex;
    private String school;
    private String grade;
    private Integer age;
    private String address;
}

再次 重启项目

记得一定要重启,或者热部署

 2.9 配置ureport数据源

ureport数据源 有三种:直连数据源、SpringBean连接、内置数据源

这个优先使用SpringBean连接,安全性高,使用简单

这里配置SpringBean连接、点击中间这个按钮

2.9.1新建数据源

ureport2,pdf,java,spring boot,excel

ureport2,pdf,java,spring boot,excel

Bean ID是我们建的那个java类的类名,这个需要对应上

ureport2,pdf,java,spring boot,excel

 2.9.2 添加数据集

ureport2,pdf,java,spring boot,excel

ureport2,pdf,java,spring boot,excel

 ureport2,pdf,java,spring boot,excel

确定后,点击userInfo 刷新,就可以看到实体类的属性了

ureport2,pdf,java,spring boot,excel

2.9.3设计模板

ureport2,pdf,java,spring boot,excel

分别给每个表格赋值 

属性名称,使用“普通文本” 类型

ureport2,pdf,java,spring boot,excel

属性值,使用“数据集” 类型

ureport2,pdf,java,spring boot,excel

ureport2,pdf,java,spring boot,excel

所有属性和值设置好后,点击保存

ureport2,pdf,java,spring boot,excel

ureport2,pdf,java,spring boot,excel

保存后,我们可以看到工程下生成了一个报表模板文件

ureport2,pdf,java,spring boot,excel

3.0 新建导出excel、pdf公共类

ExportUtils.java

package org.springboot.demo.util;

import com.bstek.ureport.export.ExportConfigureImpl;
import com.bstek.ureport.export.ExportManager;

import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.Map;
import java.util.Objects;
/**
导出excel、pdf
 */
public class ExportUtils {
    public static void exportPdf(ExportManager exportManager, String sourcePath, String targetPath, Map<String, Object> param) throws Exception {
        try {
            OutputStream fos = new FileOutputStream(targetPath);
            try {
                ExportConfigureImpl exportConfigure = new ExportConfigureImpl(sourcePath, param, fos);
                exportManager.exportPdf(exportConfigure);
            } catch (Exception e) {
                throw new Exception("exportPdf error", e);
            } finally {
                if (fos != null) {
                    try {
                        fos.close();
                    }catch(Exception e) {
                        throw new Exception("exportPdf error", e);
                    }
                }
            }
        } catch (Exception e) {
            throw new Exception("exportPdf error", e);
        }
    }
    public static void exportExcel(ExportManager exportManager, String sourcePath, String targetPath, Map<String, Object> param) throws Exception {
        try {
            OutputStream fos = new FileOutputStream(targetPath);
            try {
                String ext = targetPath.substring(targetPath.indexOf(".") + 1);
                ExportConfigureImpl exportConfigure = new ExportConfigureImpl(sourcePath, param, fos);
                if (Objects.equals(ext, "xls")) {
                    exportManager.exportExcel97(exportConfigure);
                } else {
                    if (!Objects.equals(ext, "xlsx")) {
                        throw new Exception("File name is not support!");
                    }
                    exportManager.exportExcel(exportConfigure);
                }
            } catch (Exception e) {
                throw new Exception("exportExcel error", e);
            } finally {
                if (fos != null) {
                    try {
                        fos.close();
                    } catch (Exception e) {
                        throw new Exception("exportExcel error", e);
                    }
                }
            }
        } catch (Exception e) {
            throw new Exception("exportExcel error", e);
        }
    }

}

3.1 新建测试类

urePortController.java
package org.springboot.demo.controller;


import com.bstek.ureport.export.ExportManager;

import lombok.SneakyThrows;

import org.springboot.demo.util.ExportUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

@RestController
@RequestMapping("/user")
public class urePortController {
    @Autowired
    private ExportManager exportManager;

    @SneakyThrows
    @RequestMapping("/generatePDF")
    public Map<String, Object> generatePDF(){
        Map<String,Object> dataMap = new HashMap<>();
        dataMap.put("userName","张三");
        dataMap.put("age","20");
        dataMap.put("sex","男");
        dataMap.put("grade","大三");
        dataMap.put("birthDate","2003-01-01");
        dataMap.put("address","广州市天河区");
        dataMap.put("school","广东工业大学");
        String filePath="D:/userInfo.pdf";
        ExportUtils.exportPdf(exportManager,"file:userInfo.ureport.xml",filePath,dataMap);
        //返回页面信息
        Map<String,Object> result = new HashMap<>();
        result.put("result","Success");
        result.put("data",dataMap);
        return result;
    }
    @SneakyThrows
    @RequestMapping("/generateExcel")
    public Map<String, Object> generateExcel(){
        Map<String,Object> dataMap = new HashMap<>();
        dataMap.put("userName","张三");
        dataMap.put("age","20");
        dataMap.put("sex","男");
        dataMap.put("grade","大三");
        dataMap.put("birthDate","2003-01-01");
        dataMap.put("address","广州市天河区");
        dataMap.put("school","广东工业大学");
        String filePath="D:/userInfo.xls";
        ExportUtils.exportExcel(exportManager,"file:userInfo.ureport.xml",filePath,dataMap);
        //返回页面信息
        Map<String,Object> result = new HashMap<>();
        result.put("result","Success");
        result.put("data",dataMap);
        return result;
    }

}

 重启项目,浏览器输入 http://localhost:8090/user/generatePDF

 生成PDF文件

ureport2,pdf,java,spring boot,excel

 ureport2,pdf,java,spring boot,excel

浏览器输入 http://localhost:8090/user/generateExcel

 生成表格

ureport2,pdf,java,spring boot,excel

ureport2,pdf,java,spring boot,excel

这个就是最简单的入门教程,希望大家喜欢!有问题欢迎指出! 

下一篇 :JAVA 给PDF添加水印文章来源地址https://www.toymoban.com/news/detail-719600.html

到了这里,关于Springboot 集成 Ureport2 导出Excel报表、生成PDF文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Excel报表框架(ExcelReport)极简化解决复杂报表导出问题

    耗费了半个月的时间,终于在元旦这三天把报表框架开发完成了,使用该框架你可以非常方便的导出 复杂的Excel报表 。 项目开源地址: Gitee Github 不知道各位在使用POI开发报表导出过程中遇到过以下的情况: 频繁的使用中间变量记录报表数据写到那个Cell中了。 一个复杂的报

    2024年02月03日
    浏览(49)
  • Apache POI 导出Excel报表

    大家好我是苏麟 , 今天聊聊Apache POI . 介绍 Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是,我们可以使用 POI 在 Java 程序中对Miscrosoft Office各种文件进行读写操作。 一般情况下,POI 都是用于操作 Excel 文件。 官网 : Apache POI - the Java API for Microsoft Do

    2024年01月17日
    浏览(44)
  • Apache POI,springboot中导出excel报表

    2.1 介绍 Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是,我们可以使用 POI 在 Java 程序中对Miscrosoft Office各种文件进行读写操作。 一般情况下,POI 都是用于操作 Excel 文件。 Apache POI 的应用场景: 银行网银系统导出交易明细 各种业务系统导出Excel报

    2024年02月02日
    浏览(35)
  • 使用SpringBoot+React搭建一个Excel报表平台

    摘要:本文由葡萄城技术团队于CSDN原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 Excel报表平台是一款功能强大、操作简单的系统平台,可以帮助用户上传、编辑和分析报表数据,实现数据可视化。 本文所

    2024年02月16日
    浏览(45)
  • springboot+JXLS+Jexl实现报表模版生成报表

    前言 做这个项目的思路是由于公司基于自身发展,需要将之前的老项目平台拆解出来,由于之前的项目是所有的功能全部集中在一起,学习成本以及后续的扩展性来说,非常的不友好,并且由于之前设计人员的流失导致了项目无法进一步优化,所以想将其进行拆解,将单个功

    2024年02月08日
    浏览(36)
  • 积木报表Excel数据量大导出慢导不出问题、大量数据导不出问题优化方案和分析解决思路(优化前一万多导出失败,优化后支持百万级跨库表导出)

    原积木导出有两种导出,直接导出和大数据导出(大数据导出是做了优化去掉了一些样式之类的,性能更好) 实测中发现 原积木大数据导出性能:1万条数据导出耗时30秒,1.5万条耗时1.5分钟导出失败,数据超过一万条后经常导出失败,还会导致容器实例探活失败/内存撑爆重

    2024年04月11日
    浏览(78)
  • spring boot导入导出excel,集成EasyExcel

    一、安装依赖 二、新建导出工具类 三、新建实体类 @ExcelProperty: 核心注解,value属性可用来设置表头名称,converter属性可以用来设置类型转换器; @ColumnWidth: 用于设置表格列的宽度; @DateTimeFormat: 用于设置日期转换格式; @NumberFormat: 用于设置数字转换格式。 四、如果需

    2024年02月06日
    浏览(58)
  • Spring Boot集成EasyExcel实现excel导入导出操作

    Easy Excel 官网 Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很

    2024年02月14日
    浏览(41)
  • Spring Boot 集成 EasyExcel 3.x 优雅实现Excel导入导出

    本章节将介绍 Spring Boot 集成 EasyExcel(优雅实现Excel导入导出)。 🤖 Spring Boot 2.x 实践案例(代码仓库) EasyExcel 是一个基于 Java 的、快速、简洁、解决大文件内存溢出的 Excel 处理工具。它能让你在不用考虑性能、内存的等因素的情况下,快速完成 Excel 的读、写等功能。 Ea

    2024年02月03日
    浏览(78)
  • springboot实现导出excel

    添加maven依赖 编写要导出的类 去数据库查询要导出的数据 调用接口导出数据 实操测试 点击链接会实现导出excel的功能 http://162.14.107.118:8086/PC/exportExcelAddMoney

    2024年02月10日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包