Skip to content

常见问题

1.SpringReport是否完全开源?

答:SpringReport是开源的,开源协议是Apache2.0,在遵守Apache2.0协议,保留logo和水印的前提下可以商用。 github源码地址:https://github.com/springreport/springreport gitee源码地址:https://gitee.com/springreport/springreport

为了项目的可持续发展,目前有以下几部分内容是收费的

序号收费内容价格备注
1去除水印+商用授权¥7499(含税)只是去掉水印,不提供以下内容的源代码,如果对水印没有要求的可以忽略
2luckysheet优化后的源代码+去除水印+商用授权¥12999(含税)如果不需要对luckysheet进行二次开发的话没必要购买源码,没有源码对使用完全没有影响
3SpringBoot3框架对应的源代码¥6499(含税)功能上与SpringBoot2版本是一样的,只是框架上的区别
4对oracle,sqlserver,postgresql,达梦,人大金仓数据库,瀚高数据库的支持¥5499(含税)此处的数据库指的是项目底层的数据库支持,并不是报表数据源的数据库支持,报表数据源没有限制
5PPT插件¥6999(含税)PPT插件使用的是前端开源项目PPTist,后端不对外开放,如果需要请与作者联系
6onlyoffice版本word设计器¥5499(含税)onlyoffice版本word设计器属于不开源内容,如果需要请与作者联系
7以上全部内容¥29000(含税)全部源码交付,永久免费升级,没有项目数量限制

2.报表参数是否可以支持通过url进行传递?

答:是可以的,例如我参数添加了一个输入框,参数名称是菜单名称,参数编码是menuName,如下图所示: 输入图片说明 访问报表页面时url中带入menuName这个参数即可,页面中的参数会将值自动填充到页面的输入框中,并作为查询条件进行查询,例如: http://localhost:9527/SpringReport/luckyReportPreview?tplId=1773896325877346305&menuName=test 如下图所示: 输入图片说明如果页面上不想显示该参数,可以将该参数设置为隐藏项,查询条件依旧会起作用,只是页面上隐藏掉了而已。

3.sql语句在navicat或者其他的工具中可以执行,但是在SpringReport中无法正常执行,并且报类似下面的异常信息是怎么回事?

sql语句执行错误,请检查sql语句是否拼写正确或者数据源是否选择正确。
错误信息:You have an error in your SQL syntax; check the manual that corresponds 
to your MySQL server version for the right syntax to use near 'sys_menu limit 1' at line 1

答:这个问题请着重检查一下sql语句中是否使用了【<】符号。因为SpringReport的sql解析跟mybatis的sql解析原理一致, MyBatis中的小于号(<)在XML配置文件中通常用作标签的开始,因此在SQL查询中直接使用小于号可能会导致解析错误。为了正确使用小于号,可以使用以下三种方式解决:

1.使用其HTML实体编码,即&lt;来代替小于号,例如 【select * from table where 字段A &lt; 字段B】
2.避免使用【<】符号,将两个字段换位置,使用【>】符号,例如【select * from table where 字段B > 字段A】
3. 使用<![CDATA[]]>标签,例如【<![CDATA[select * from table where 字段A < 字段B]]>】
注意该标签不能嵌套使用

4. linux环境系下部署系统,word模板pdf中文无法显示如何解决?

a、将C:\Windows\Fonts 所有字体全部压缩成zip包(allfont.zip)
b、将压缩包拷贝到linux服务器上的 /usr/share/fonts目录
c、unzip allfont.zip 解压文件
d、使用命令刷新到缓存中:执行命令:fc-cache -fv 
e、重启应用服务

5. vue3版本执行打包命令 pnpm rub build出现内存溢出等异常如何解决?

答:参考文章:https://www.cnblogs.com/qubernet/p/18202023

6. excel报表中如何动态扩展生成序号?

答:可以将数据集结合excel中row()函数一起用来实现。单独用row()函数是不行的,单独使用row()函数无法实现动态扩展,需要与数据集中的一个字段配合使用,
以sql语句数据集为例,可以在sql语句中添加一个固定值列,例如select *,0 as sequence from table,sequence这一列数据固定为0,
单元格的序号可以这样写:=row()-ds001.${sequence},这样的写因为有动态数据列ds001.${sequence},所以会动态扩展,这样也就会有动态扩展序号了

7. vue3版本安装完依赖后报样式错误,并且一直转圈圈无法进入到页面中,错误如下图所示:

输入图片说明

答:sass依赖的版本过高导致的,将版本降低即可。执行命令pnpm i sass@1.77.0 安装低版本的sass依赖

8. word模板上传文件过大,提示【413(Request Entity Too Large)】错误,如下图所示:

输入图片说明

答:nginx配置添加client_max_body_size,如下图:

输入图片说明

9.mac系统启动如下图的错误信息如何解决?

输入图片说明

答:有两种解决方式
方案一:在parent项目的pom.xml中添加如下的依赖:
<dependency>
  	<groupId>io.netty</groupId>
  	<artifactId>netty-resolver-dns-native-macos</artifactId>
  	<version>4.1.75.Final</version> <!--版本号自己切-->
  	<classifier>osx-aarch_64</classifier>
</dependency>

方案二:在application.properties中添加以下配置:
spring.jvmArguments=-Dio.netty.resolver.dns.native=false

10.下载下来的docker,server容器无法启动?

docker是FROM centos:7.9.2009,centos官方的源已经不维护了,所以which安装不了,你需要修改dockerfile文件,修改安装源

修改成如下系统尝试一下:FROM rockylinux/rockylinux:9-ubi-init

11. 前端项目系统报依赖 @vue-office/docx的相关错误如何解决?如下图:

输入图片说明

可能是因为@vue-office这个依赖没有下拉来导致的,可以用不同的命令多尝试一下,pnpm,yarn,cnpm都可以尝试进行安装,
如果都安装不上可以去git上找到【sql脚本和其他\可能无法下载的依赖jar包】找到【@vue-office】放到自己本地的前端node_modules依赖库中

11.使用postgre数据库填报数据时,提示类型转换的错误,类似:【类型为 smallint, 但表达式的类型为 character varying 建议】该如何解决?

答:这是因为pg数据库没有开启字符串和数值隐式转换的配置,可以执行以下的sql语句开启隐式转换
create cast (numeric as varchar) with inout as implicit;
create cast (varchar as numeric) with inout as implicit;

CREATE CAST (INTEGER AS VARCHAR) WITH INOUT AS IMPLICIT;
CREATE CAST (VARCHAR AS INTEGER) WITH INOUT AS IMPLICIT;
CREATE CAST (BIGINT AS VARCHAR) WITH INOUT AS IMPLICIT;
CREATE CAST (VARCHAR AS BIGINT) WITH INOUT AS IMPLICIT;
CREATE CAST (VARCHAR AS SMALLINT) WITH INOUT AS IMPLICIT;
CREATE CAST (SMALLINT AS VARCHAR) WITH INOUT AS IMPLICIT;

12.vue3版本安装完依赖启动报如下图的错误如何解决?

输入图片说明

答:这可能是因为pnpm的版本低导致的,作者使用的版本是9.3.0,可尝试使用该版本重新安装依赖尝试

也有可能是因为下面两个包的版本高的原因,手动降低一下依赖:

输入图片说明

13.SqlServer数据源执行存储过程报【该语句没有返回结果集】错误如何解决?

答:在存储过程中增加SET NOCOUNT ON(不返回受影响行数),让数据库端不将影响的行数返回给客户端或者在模板数据集>数据库查询调用存储过程并设置SET NOCOUNT ON。
下面我们以一个具体的示例看下如何设置。
示例:
如已经存在了带有insert/update的一个简单的存储过程,如下:
create PROCEDURE [dbo].[prc_stuff]      
AS      
BEGIN      
   INSERT INTO dbo.雇员(雇员id,姓氏) values(10,'薛')      
  SELECT * from dbo.雇员where 姓氏= '薛'      
END    

此时修改存储过程,在BEGIN开始时加上SET NOCOUNT ON,如下:
ALTER PROCEDURE [dbo].[prc_stuff]      
AS      
BEGIN      
   SET NOCOUNT ON    
   INSERT INTO dbo.雇员(雇员id,姓氏) values(10,'薛')      
   SELECT * from dbo.雇员where 姓氏= '薛'      
END