麦粉社区
>
帖子详情

新人求助,外部应用怎样通过url获取报表文件

数据分析 发表于 2021-1-19 11:42
发表于 2021-1-19 11:42:22
现在希望将smartBI作为一个报表服务器,其他应用(非java项目)通过URL获取指定报表,并在应用本地生成报表文件(xlsx),想问下应该怎么做?我尝试通过下面的url去访问,resid是我之前制作的电子表格的资源id,但是得到的一个html的页面

http://localhost:18080/smartbi/vision/openresource.jsp?resid=I8a9e81ab0176f57ff57faa9e0176f599ef6800f7&user=XXX&password=XXX


后来尝试在F12里找了一下导出excel文件的URL:
http://localhost:18080/smartbi/vision/ssreport/htmls/I8a9e81ab0177185c185c1c070177186a45000093/attachment?t=1611024668325
但是其中的I8a9e81ab0177185c185c1c070177186a45000093不清楚是怎么生成的,跟我制作的电子表格的资源resid不一致,外部应用该如何拿到该id?


发表于 2021-1-19 13:57:09
为什么不直接在Smartbi中配置好计划任务去导出  为excel,然后通过邮箱等发送到对应人的邮箱呢?https://wiki.smartbi.com.cn/pages/viewpage.action?pageId=44499335
回复

使用道具 举报

发表于 2021-1-19 14:38:02
Jaylin 发表于 2021-1-19 13:57
为什么不直接在Smartbi中配置好计划任务去导出  为excel,然后通过邮箱等发送到对应人的邮箱呢?https://wi ...

因为实际情况下报表会有各种参数,这些参数需要应用传递过来;另外报表文件后续会需要上传云服务或sftp服务器,并不会用邮箱接收
回复

使用道具 举报

发表于 2021-1-19 16:05:46
看了下,最开始访问URL:http://localhost:18080/smartbi/vision/openresource.jsp?resid=I8a9e81ab0176f57ff57faa9e0176f599ef6800f7&user=XXX&password=XXX的时候服务器返回的内容里有一个clientId,后续导出报表的url里用的就是这个clientId;
这个clientId看起来是访问报表资源的时候实时ClientReportService实时生成的一个UUID?
那么外部应用应该怎么操作才能通过url获取到报表文件呢?
回复

使用道具 举报

发表于 2021-1-20 09:43:36
https://wiki.smartbi.com.cn/pages/viewpage.action?pageId=52628009,如果是这种,你可以通过后端代码的形式,去打开报表并且传参导出为excel文件。
API文档:https://wiki.smartbi.com.cn/pages/viewpage.action?pageId=52628009
回复

使用道具 举报

发表于 2021-1-20 16:43:11
Jaylin 发表于 2021-1-20 09:43
https://wiki.smartbi.com.cn/pages/viewpage.action?pageId=52628009,如果是这种,你可以通过后端代码的 ...

我试了下用java api的方式去打开报表和导出excel文件,用了SSReport是可以实现的,但是关于传递参数这块有些疑惑,我是通过SSReport.setParamValue方法来实现参数传递的,这个方法里的id在api里好像没有介绍,我自己试了下发现用的是OutputParameter.{数据集资源id}.{参数名称};
我的疑惑是第三方应用必须要拿到报表对应的数据集的id才能实现参数调用吗?因为这里的id都是类似UUID的生成机制,本来第三方应用要拿到报表的资源id已经比较麻烦了(只能在smartBI中手动获取报表资源id后配置到第三方应用中?),现在如果传递参数还需要数据集的id,对于第三方应用调用是不是太麻烦了?尤其是部分报表有多个数据集,每个数据集都有参数的时候,第三方应用要拿到所有的数据集id才能处理吗?
回复

使用道具 举报

发表于 2021-1-21 09:37:57
麦粉546587 发表于 2021-1-20 16:43
我试了下用java api的方式去打开报表和导出excel文件,用了SSReport是可以实现的,但是关于传递参数这块 ...

您好,第三方系统需要操作报表,必须先知道报表资源id,至于参数,以SSReport为例,我们提供了SSReport.getParamList方法获取参数,第三方在setParamValue前需要获取参数,将对应参数id及参数值传入。
回复

使用道具 举报

发表于 2021-1-26 19:30:04
麦粉862219 发表于 2021-1-21 09:37
您好,第三方系统需要操作报表,必须先知道报表资源id,至于参数,以SSReport为例,我们提供了SSReport.g ...

如果第三方系统用的不是java该怎么做?我看了下WebService接口里好像没有提供SSReportService相关的接口?目前提供的SimpleReportService和AnalysisReportService接口里好像都没有导出excel报表的接口?
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

7回帖数 0关注人数 4957浏览人数
最后回复于:2021-1-26 19:30
快速回复 返回顶部 返回列表