UReport微调
由于项目的需求,需要制作报表,且支持导出excel、pdf等文件。试用了积木、jasper、xdocreport、UReport等工具之后,积木表现优秀。但最后,我还是选择了UReport。
都说选择后必定有一定代价,是的。一开始真的遇上了,UReport在中国式报表表现不错,但停更很多年了,和POI和现在流行的前后端框架有诸多集成的问题。
幸好,GITHUB上有源码。下载2.3.0源码,开始了UReport集成历劫模式。主要碰到的问题有两个方面:
1、后台代码。
1)UReport依赖的POI版本低,和项目上的easyexcel等存在版本冲突,导致导出报错,包括Factory问题、XSSColor问题等。
怎么处理呢?升级UReport依赖的POI版本,这里直接升级到POI5.2.2。升级后,core和console模块代码会报错。逐个修改和思考替代方式即可,修改点主要是XSSColor、字体以及表格列宽等。
2)项目依赖一定要去掉ooxml-schemas依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>${easyexcel.verion}</version>
<exclusions>
<exclusion>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
</exclusion>
</exclusions>
</dependency>
3)关于微服务版本后端的调整。在分析报表模块,做好token接收处理和用户认证即可,避免出现访问安全问题。对于熟悉JAVA的大家,不算难事。
后端Header: Authorization。
另外,由于我的项目有多租户概念,增加了Header: tenant-id
2、前端代码。
我这边前端用的VUE3。主要调整有:
1)在跳转设计器和报表展示链接处理上,统一加了token参数。
2)修改UReport的report-js代码,对主要页面(设计和预览)加上token接收;模块中关于ajax的调用,统一加上header,传递token;对于个别的window.open调用,类似上面的,暂时加token参数方式来处理。
3) 前端具体修改参考:
Ureport2打包,源码修改后打包问题,_ureport 打包-CSDN博客
前端环境调整点(package.json):
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack",
"start": "webpack-dev-server --open"
},
// 在devDependencies中添加 webpack、webpack-cli及webpack-dev-server三个。
"devDependencies": {
"babel-cli": "^6.26.0",
"babel-core": "^6.26.0",
"babel-loader": "^7.1.4",
"babel-preset-env": "^1.6.1",
"css-loader": "^0.28.11",
"expose-loader": "^0.7.1",
"file-loader": "^0.9.0",
"style-loader": "^0.13.1",
"uglifyjs-webpack-plugin": "^1.2.4",
"url-loader": "^0.5.7",
"webpack": "^4.46.0",
"webpack-cli": "^3.3.12",
"webpack-dev-server": "^3.11.2"
}
3、项目地址:
个人这种方式,属笨拙费力的体力活(网上也有一些其他的集成方法,比如在nginx层做转发token处理,也是一种很灵巧的方式),希望对大家有所帮助。
更多推荐

所有评论(0)