马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
一.UReport2概述:
UReport2是一款基于架构在Spring之上纯Java的高性能报表引擎,通过送代单元格可以实现恣意复杂的中国式报表。相比UReport1UReport2重写了全部代码,弥补了UReport1在功能及性能上的各种不敷。在UReport2中,提供了全新的基于网页的报表设计器,可以在Chrome、Firefox、Edge等各种主流欣赏器运行 (E欣赏器除外) 。使用UReport2打开欣赏器即可完成各种复杂报表的设计制作。
文档视频教程所在:
- BSDN WIKI: http://wiki.bsdn.org/display/UR/ureport2+Home
- w3cschool: https://www.w3cschool.cn/ureport
二.安装配置
1.pom.xml文件中引入ureport2的依赖
- <!-- ureport2报表 -->
- <dependency>
- <groupId>com.bstek.ureport</groupId>
- <artifactId>ureport2-console</artifactId>
- <version>2.2.9</version>
- </dependency>
复制代码 2.启动类指定xml文件,注册Bean
- @ImportResource("classpath:ureport-console-context.xml")
- @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
- public class RuoYiApplication {
- public static void main(String[] args) {
- SpringApplication.run(RuoYiApplication.class, args);
- System.out.println("(♥◠‿◠)ノ゙ 若依启动成功 ლ(´ڡ`ლ)゙ \n" +
- " .-------. ____ __ \n" +
- " | _ _ \\ \\ \\ / / \n" +
- " | ( ' ) | \\ _. / ' \n" +
- " |(_ o _) / _( )_ .' \n" +
- " | (_,_).' __ ___(_ o _)' \n" +
- " | |\\ \\ | || |(_,_)' \n" +
- " | | \\ `' /| `-' / \n" +
- " | | \\ / \\ / \n" +
- " ''-' `'-' `-..-' ");
- }
- @Bean
- public ServletRegistrationBean buildUReportServlet(){
- return new ServletRegistrationBean(new UReportServlet(),"/ureport/*");
- }
复制代码 3.根据@ImportResource("classpath:ureport-console-context.xml")指定,创建context.xml文件
- <?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">
-
- <import resource="classpath:ureport-console-context.xml" />
- <bean id="propertyConfigurer" parent="ureport.props">
- <property name="location">
- <value>classpath:config.properties</value>
- </property>
- </bean>
- </beans>
复制代码 若依框架配置层级目次:ruoyi-admin\src\main\resources\context.xml
假如为springboot框架整合,放在resources下即可。
4.根据context.xml指定位置创建ureport配置文件。名为config.properties
- ureport.disableHttpSessionReportCache=false
- ureport.disableFileProvider=true
- ureport.fileStoreDir=/WEB-INF/ureportfiles
- ureport.debug=true
复制代码 5.在ruoyi-framework模块SecurityConfig.java类中参加运行匿名访问,将拦截清除
此时后端配置完成。启动项目,下图为启动成功。
访问http://localhost:8080/ureport/designer即可。
三.前端配置
1.在ruoyi-ui/vue.config.js添加下列代码
- '/ureport': {
- target: 'http://localhost:8080',
- ws:false,
- changeOrigin: true,
- pathRewrite: {
- '^/ureport': '/ureport'
- }
- }
复制代码 位置如下
2.在views目次下创建ureport/designer,新增index.vue文件。
层级目次:src\views\ureport\designer\index.vue
- <template>
- <div v-loading="loading" :style="'height:'+ height">
- <iframe :src="src" frameborder="no" style="width: 100%;height: 100%" scrolling="auto"/>
- </div>
- </template>
- <script>
- export default {
- name: "Ureport",
- data() {
- return {
- src: "/ureport/designer",
- height: document.documentElement.clientHeight - 94.5 + "px;",
- loading: true
- };
- },
- mounted: function() {
- setTimeout(() => {
- this.loading = false;
- }, 230);
- const that = this;
- window.onresize = function temp() {
- that.height = document.documentElement.clientHeight - 94.5 + "px;";
- };
- }
- };
- </script>
复制代码 3.在若依系统新增目次
4.新增菜单
启动项目后可看到
此时可制作报表。
四.制作报表并保存至数据库
制作报表后,将模板保存至数据库。
起首创建数据库表。
- CREATE TABLE `ureport_file_tbl` (
- `id_` int(11) NOT NULL AUTO_INCREMENT,
- `name_` varchar(100) NOT NULL,
- `content_` mediumblob,
- `create_time_` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
- `update_time_` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
- PRIMARY KEY (`id_`)
- ) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8mb4;
复制代码 重写ureport中crud的接口方法。创建类MySQLProvider。前缀名为指定前缀,在做模板的crud时,调用到ureport底层代码,会根据前缀判断进入的方法。
重写方法后,重启项目。保存时会看到
 mysql-provider为数据库保存所在。服务器文件系统为ureport默认保存所在。选择服务器文件系统可保存至系统内,但需要创建保存路径。输入文件名,选择mysql-provider后点击保存,即可保存到数据库中。此处可看到源码UReport2 报表存储与数据源配置_w3cschool
五.与业务结归并导出excel文件(从数据库中获取文件)
保存至数据库后,可以看到保存的文件。

导出excel文件需要创建一个导出excel的工具类。
- 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);
- }
- }
-
- }
复制代码 调用工具类方法
- ExportUtils.exportExcel(exportManager,sourcePath,filePath,dataMap);
复制代码 参数可在工具类中看到
第一个参数是调用导出方法的接口,主动注入即可。导出接口源码。
ExportManager接口源码。
- import com.bstek.ureport.export.html.HtmlReport;
- import java.util.Map;
- public interface ExportManager {
- String BEAN_ID = "ureport.exportManager";
- HtmlReport exportHtml(String var1, String var2, Map<String, Object> var3);
- HtmlReport exportHtml(String var1, String var2, Map<String, Object> var3, int var4);
- void exportPdf(ExportConfigure var1);
- void exportExcel(ExportConfigure var1);
- void exportExcel97(ExportConfigure var1);
- void exportExcelWithPaging(ExportConfigure var1);
- void exportExcel97WithPaging(ExportConfigure var1);
- void exportExcelWithPagingSheet(ExportConfigure var1);
- void exportExcel97WithPagingSheet(ExportConfigure var1);
- void exportWord(ExportConfigure var1);
- }
复制代码 第二个参数sourcePath为String类型,此参数为你想导出模板的名称,对应数据库name的名称。
比如保存到数据库中模板的名称为测试导出模板.ureport.xml。
- String sourcePath = "mysql:测试导出模板.ureport.xml";
复制代码 mysql: 是名称前缀,与重写的MySQLProvider 类中prefix一致。为特定前缀,不写或者写file:
前者会报错,后者不会进入到重写的MySQLProvider类中的方法,会进入ureport底层默认的查询服务器文件所在。此处重点~
第三个参数filePath为导出文件下载的所在,根据环境写即可。
- String filePath = "D:/ureport/xxx.xlsx";
复制代码 第四个参数dataMap存放写在模板中sql需要的参数。根据业务填写即可。
本文因将模板存储到项目中,部署到服务器后,导出不停报错,找不到模板位置,以是将模板修改至保存到数据库中调用。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |