SpringBoot整合Ureport2 报表 及常见使用方法

UReport2 报表个人使用较多,有较多关于报表经验未写入文章
有空再慢慢补全,欢迎私信交流,互相学习。

1、Maven 添加依赖

	 <!--ureport-->
     <dependency>
         <groupId>com.syyai.spring.boot</groupId>
         <artifactId>ureport-spring-boot-starter</artifactId>
         <version>2.2.9</version>
     </dependency>

2、编写ureport2 的配置类

配置类实现 BuildinDatasource
1)注册Bean
2)重命名ureport2的数据源名称

import com.bstek.ureport.console.UReportServlet;
import com.bstek.ureport.definition.datasource.BuildinDatasource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;

import javax.annotation.Resource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
@ImportResource("classpath:ureport-console-context.xml")//不加项目能够启动但是会导致加载数据源报错或加载不了
@Configuration
@EnableAutoConfiguration
public class UreportConfig implements BuildinDatasource {
    @Resource
    DataSource dataSource;
    private Logger log = LoggerFactory.getLogger(getClass());

    @Bean //定义ureport的启动servlet
    public ServletRegistrationBean buildUreportServlet(){
        return new ServletRegistrationBean(new UReportServlet(),"/ureport/*");//  /ureport/* 不可更改
    }

    @Override
    public String name() {
        return "ureport2 数据源";
    }

    @Override
    public Connection getConnection() {
        try {
            return dataSource.getConnection();
        } catch (SQLException e) {
            log.error("Ureport 数据源 获取连接失败!");
            e.printStackTrace();
        }
        return null;
    }

}

3、ureport2 访问路径

http://127.0.0.1:8080/项目名称/ureport/designer

在这里插入图片描述

4、选择数据源方式:内置数据源

ureport2 的配置类实现 BuildinDatasource ,即配好了内置的数据源,直接使用即可
在这里插入图片描述

5、选择数据源方式:SpringBean数据源配置

数据源名称:自定义命名
Bean ID: Bean 对象–yjReportService ,与java类名称一致 首字母需要转成小写

在这里插入图片描述
在这里插入图片描述

6、添加Sping Bean 数据源的数据集

数据集名称:自定义
方法名:你配置的Bean对象中的方法名称,即service中的方法,该方法必 须包含3个参数,否则无法找到
返回对象:报表中的返回数据接收对象,全路径名,可不写,自己手动添加返回字段(未尝试)
在这里插入图片描述

报表编辑完成后参数传递方式:http://127.0.0.1:8088/项目名称/ureport/preview?_u=file:报表名称&parameters=参数值

业务逻辑代码:参数值进行接收即可
在这里插入图片描述

7、内置数据源方式配置数据集

配置数据集有2种方式:
1、使用SQL语句查询数据
2、使用${表达式}:也是SQL的形式,用字符串拼接起来

7.1、使用SQL的方式

正常编写SQL即可,需要传递参数用‘ :’ 加字段名表示
可添加默认的参数,设置的参数名字和SQL中的参数名字保持一致
如果没传参,则使用默认的参数进行查询
若有多个参数,同样的方式进行添加
例:select * from 表 where id = :id

在这里插入图片描述

报表制作完成后,报表参数传递方式:http://127.0.0.1:8080/项目名称/ureport/preview?_u=file:报表名称&iid=参数值

7.2、使用${表达式}方式

使用表达式的方式通常都是动态SQL的方式查询数据
外部参数传进报表后再进行查询
ureport2获取参数的方式:param(“参数字段”)
例子:${ SQL 语句 }

先看看最终效果:报表使用iframe 页面展示,外部参数传入报表查询数据
在这里插入图片描述

7.2.1、制作报表:

使用${ sql 语句} 注意事项:
若SQL中包含单引号包裹的字符串,那么需要加上“\”来为单引号转义,否则会出现语法错误
判断外部是否传递参数,2种方式:
1、使用三目表达式:判断是否为空,不为空则拼接SQL语句条件
例:(param(“参数名称”)!=null && param(“参数名称”)!="" ? “and 字段 = '”+param(“参数名称”)+"’" : “”)
2、使用函数(较为简洁),可使用添加参数方式,或者直接获取参数方式
1)添加参数方式(借鉴上面的sql 传参的方式,:+字段): (emptyparam(“name”)==false ? “and name=:name” : “”)
2)直接获取参数方式:
(emptyparam(“name”)==false ? “and name=”\’ “+param(“参数名称”)+”\’" " : " ")

注意字符串拼接后,sql语句前后的空格问题,单引号加 \ 的问题
${
  	"select from  表1 a "+
    "left join 表2 b on b.id=a.id "+
    "where 1=1 "
    + (param("参数名称")!=null && param("参数名称")!="" ? 
       		"and 字段 = \'"+param("参数名称")+"\'" : " ")
    +")t "   
}

在这里插入图片描述

报表制作完成后,报表参数传递方式:http://127.0.0.1:8080/项目名称/ureport/preview?_u=file:报表名称&参数名称=参数值

8、点击报表的数据跳转页面,查看详情

最终目标
在这里插入图片描述

在报表中添加需要跳转连接的地方进行URL配置
URL上需要传递报表中的某个参数,则点击URL参数配置
URL:自行配置 ,当前目录注意加 “点点/”
例:. ./yw/ssj/SearchList

在这里插入图片描述

8.1、配置URL上传递的参数

若获取当前单元格的数值作为参数,则值表达式应为:#
若获取当前单元格的对象的其他属性作为参数,则值表达式为:#.属性名称
若获取外部传进报表的参数作为参数,则值表达式为: param(“参数名称”)

在这里插入图片描述

9、某些数据为数值,对应的数据解释

获取的数据库数据为数字标识,需要重置单元格的数据显示
点击数据映射进行添加
例:1 表示成功。0表示失败 等

在这里插入图片描述

10、格式化单元格,区分标识数据

目标效果
在这里插入图片描述

10.1、报表编辑

在需要进行格式化单元格点击配置条件

在这里插入图片描述

分别配置超标和未超标单元格格式化的颜色
条件配置时:
1、若当前值为数值类型,直接填写数值条件即可
2、若当前的值为字符串类型,值表达式需要在字符串加上 单引号:‘当前值’
若选择表达式的方式:参考前面值表达式的写法(配置URL上传递的参数有说明)

在这里插入图片描述
在这里插入图片描述

11、页面修改保存报表后并未生效问题

目前仅在mysql 数据库的情况下遇到保存报表后并未保存成功。
sqlserver、Oracle 时并未遇到此情况
若出现编辑报表保存后并未修改成功,直接去修改生成的报表xml文件
默认报表保存路径:web-inf/ureportfiles下
在这里插入图片描述
在这里插入图片描述
根据返回字段填充进入xml格式对应的位置,以“ yb_continude”字段为例:
在这里插入图片描述

至此,直接修改生成xml文件保存即可

12、报表加载多个图片

路径问题:UReport2默认支持以classpath:开头位于classpath下的图片文件,或以/开头位于WEB应用根下或某目录下的图片文件
示例:我的图片放在了web-info下的image下
classpath:/static/image/mywork/1.png

有些需求的图片并不是读取已有的图片,而是读取数据库存储的路径,数据库存储的路径也需符合ureport2的地址格式,通过表达式动态为图片指定一个路径,如:emp.select(photo),表达从数据集emp中取现photo属性值作为图片路径

在这里插入图片描述

通过读取数据集的方式
图片来源选择表达式:表达式的结果必须符合ureport2的地址格式
在这里插入图片描述
这个是我使用数据集在数据库中读取的路径:
在这里插入图片描述

如果有多条数据,多个图片只展示一条的问题,应该是左父格,上父格没有设置对,自行注意

Ureport2的使用说明

  • 11
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
### 回答1: Spring Boot整合UReport2可以通过以下步骤实现: 1. 引入UReport2的依赖 在pom.xml文件中添加以下依赖: ``` <dependency> <groupId>com.bstek.ureport</groupId> <artifactId>ureport2-core</artifactId> <version>2..6</version> </dependency> ``` 2. 配置UReport2的数据源 在application.properties文件中添加以下配置: ``` ureport.fileStoreDir=ureport_files ureport.ds.myds.driverClassName=com.mysql.jdbc.Driver ureport.ds.myds.url=jdbc:mysql://localhost:3306/test ureport.ds.myds.username=root ureport.ds.myds.password=root ``` 其中,ureport.fileStoreDir是UReport2报表文件存储的目录,ureport.ds.myds是数据源的配置,可以根据实际情况修改。 3. 创建UReport2报表 在resources目录下创建ureport文件夹,并在该文件夹下创建一个以ureport为后缀的文件,例如test.ureport.xml。 在该文件中可以使用UReport2提供的设计器创建报表。 4. 配置Spring Boot的Controller 在Spring Boot的Controller中注入UReportEngine对象,并在方法中调用UReportEngine的runReport方法生成报表。 ``` @RestController public class ReportController { @Autowired private UReportEngine uReportEngine; @GetMapping("/report") public void report(HttpServletResponse response) throws Exception { UReportFile reportFile = uReportEngine.getReportFile("test.ureport.xml"); UReport uReport = reportFile.parse(); Map<String, Object> parameters = new HashMap<>(); parameters.put("param1", "value1"); parameters.put("param2", "value2"); byte[] bytes = uReportEngine.generatePdf(uReport, parameters); response.setContentType("application/pdf"); response.getOutputStream().write(bytes); } } ``` 在上述代码中,调用了UReportEngine的getReportFile方法获取报表文件,然后调用parse方法解析报表文件,最后调用generatePdf方法生成PDF格式的报表。 5. 运行Spring Boot应用程序 在浏览器中访问http://localhost:808/report,即可生成报表并下载。 ### 回答2: Spring Boot是一种开源框架,可以用于快速构建基于Spring的企业级Web应用程序。而Ureport2是一个基于Java的开源报表引擎。将Spring BootUreport2结合起来,可以轻松构建出一个高效、稳定的报表系统。 首先,需要在Spring Boot的Maven依赖中添加Ureport2的依赖项,例如: ``` <dependency> <groupId>com.bstek.ureport</groupId> <artifactId>ureport2-console</artifactId> <version>2.8.14</version> </dependency> ``` 接下来,需要在Spring Boot中配置Ureport2,主要包括以下步骤: 1. 配置Ureport2的工作目录,可以通过在application.properties中添加以下一行代码来实现: ``` ureport2.fileStoreDir=/ureport/filestore ``` 2. 配置Ureport2的资源访问路径,可以通过在application.properties中添加以下一行代码来实现: ``` ureport2.urConfigFile=classpath:ureport-context.xml ``` 3. 在Spring Boot中添加Ureport2的配置文件,需要在src/main/resources目录下创建ureport-context.xml文件,并在其中添加以下代码: ``` <bean id="ureportHtmlViewResolver" class="com.bstek.ureport.view.UreportHtmlViewResolver"> <property name="ureportTemplate" value="classpath:report/"/> </bean> ``` 4. 如果需要使用Ureport2的自定义扩展功能,可以在Spring Boot中添加相关扩展。 最后,还需在Spring Boot中编写相关代码,实现与Ureport2的数据交互。这部分代码需要遵循Ureport2的API规范,可通过Ureport2的文档获取相关信息。 总之,通过以上步骤,就可以轻松地将Spring BootUreport2整合起来,构建出高效稳定的企业级报表系统。 ### 回答3: Spring Boot是一个开源的Java Web框架,它提供了一种快速创建和部署Web应用的方式。Ureport2是一款强大的Java报表引擎,可以快速生成多种格式和样式的报表。将Spring BootUreport2整合可以使开发人员更加轻松地创建和管理报表,提高开发效率。 整合步骤如下: 1.添加依赖库 在pom.xml文件中添加以下依赖库: ```xml <dependency> <groupId>com.bstek.ureport</groupId> <artifactId>ureport2-core</artifactId> <version>2.6.6</version> </dependency> <dependency> <groupId>com.bstek.ureport</groupId> <artifactId>ureport2-web</artifactId> <version>2.6.6</version> </dependency> <dependency> <groupId>com.bstek.ureport</groupId> <artifactId>ureport2-engine</artifactId> <version>2.6.6</version> </dependency> ``` 2.配置文件Spring Boot的配置文件application.properties中增加以下配置: ureport.enabled=true ureport.report_home=/ureport2_home ureport.designer.enabled=true 其中,ureport.enabled设置为true,表示启用ureportureport.report_home表示报表文件存储的根路径;ureport.designer.enabled表示是否启用报表设计器。 3.定义报表控制器 在Spring Boot中定义控制器类来处理生成和展示报表,可以使用Spring Boot提供的@RestController注解来实现。 ```java @RestController @RequestMapping("report") public class ReportController { @Autowired private ReportService reportService; @GetMapping("/pdf") public void generatePdfReport(HttpServletRequest request, HttpServletResponse response) { // 获取报表模板文件 InputStream inputStream = this.getClass().getResourceAsStream("/ureport/test.ureport.xml"); // 获取报表数据 List<Map<String, Object>> dataList = reportService.getDataList(); // 生成PDF格式的报表文件 OutputStream outputStream = null; try { outputStream = response.getOutputStream(); UReportUtils.generatePdf(inputStream, dataList, outputStream); } catch (IOException e) { e.printStackTrace(); } finally { IOUtils.closeQuietly(outputStream); } } } ``` 在上述控制器类中,@GetMapping注解指定URL路径为“/report/pdf”,表示请求生成PDF格式的报表文件。通过报表模板文件报表数据生成PDF格式的报表,并输出到response中。 4.定义报表服务类 在Spring Boot中定义服务类来获取数据并返回给报表控制器,可以使用Spring Boot提供的@Service注解来实现。 ```java @Service public class ReportService { public List<Map<String, Object>> getDataList() { // 从数据库或其他数据源获取数据 List<Map<String, Object>> dataList = new ArrayList<>(); Map<String, Object> data = new HashMap<>(); data.put("name", "张三"); data.put("age", 28); dataList.add(data); return dataList; } } ``` 在上述服务类中,getDataList方法从数据库或其他数据源获取数据,并返回给报表控制器使用整合完毕后,启动应用程序,访问“/report/pdf”即可生成PDF格式的报表文件并输出到浏览器中。Ureport2还支持多种格式和样式的报表输出,可以根据实际需求进行配置和使用
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值