ureport 显示html,UReport2 与业务结合
本小节中我们将介绍如何在业务页面中展示报表、导出报表文件、引用报表内容等操作。
报表相关URL
在配置好一个包含UReport2的项目后,就可以运行我们的项目,打开UReport2的基于网页的报表设计器,它的地址如下:UReport2报表设计器URL
http://host[:port][/context-path]/ureport/designer
如果我们是在本地启动项目,并且服务器端口号为8080,context-path为ureport2-demo,那么我们的报表设计器的URL就是:http://localhost:8080/ureport2-demo/ureport/designer。
在报表设计器中,设计好报表后,点击左上角的
图标就可以在线预览报表(预览报表有两种方式,一种是不分页预览报表;一种是分页预览报表,如果报表数据量较大,我们推荐预览时采用分页方式,这样可以减轻浏览器渲染压力);预览报表的URL如下:UReport2预览报表URL
http://host[:port][/context-path]/ureport/preview?_u=报表名称
在上面的URL中有个名为“_u”的参数,它是用来指定当前要预览的报表模版名称,如果是对正在设计器中的报表进行预览,那么它的值就是“p”,这是一个约定的值,表示要预览的是正在设计器中的报表,所以可以看到我们演示时预览的URL都是这样:http://localhost:8080/ureport2-demo/ureport/preview?_u=p 。预览正在设计中的报表注意事项
在预览正在设计器中设计的报表时(也就是_u=p),UReport2会在点击设计器工具栏
图标时,将设计中的报表模版信息提交到服务器,存放于当前用户的session中(用户会话中),所以一旦用户session失效,如果我们再次直接预览_u=p类型报表时,会看到“com.bstek.ureport.console.exception.ReportDesignException: Report data has expired,can not do preview.”这样的错误提示,表示存放于session中的正在设计器中设计的报表模版已经失效,不能预览。
当然,如果_u的值是一个具体的报表名称,则不存在这种问题,只有正在设计器中设计的报表模版在预览中采用了这种机制,这点需要注意。
如果预览的不是正在设计器中设计的模版,那么只需要给出具体的报表名称即可,需要注意的是,这里的报表名称要以其ReportProvider中要求的前缀开始,比如http://localhost:8080/ureport2-demo/ureport/preview?_u=file:test.ureport.xml等。
报表预览后,通过预览页面上方工具栏中一排按钮,可以实现报表的PDF打印、导出Word、Excel、PDF等,对应的相关URL如下:URL说明http://host[:port][/context-path]/ureport/pdf/show?_u=报表名称这个URL将向浏览器写入一个PDF文件流,在Chrome、Firefox、Edge这些
浏览器中将会直接在线显示PDF文件内容,这样可以实现在线浏览PDF并打印输出。
http://host[:port][/context-path]/ureport/word?_u=报表名称导出对应报表的Word文件
http://host[:port][/context-path]/ureport/excel?_u=报表名称不分页导出对应报表的Excel文件
http://host[:port][/context-path]/ureport/excel/paging?_u=报表名称分页导出对应报表的Excel文件
http://host[:port][/context-path]/ureport/excel/sheet?_u=报表名称分页分Sheet导出对应报表的Excel文件
http://host[:port][/context-path]/ureport/pdf?_u=报表名称导出对应报表的PDF文件关于报表参数
上面的这些URL在使用时,如果需要向报表传入参数,可以将这些参数直接放在URL后面使用,如:http://localhost:8080/ureport2-demo/ureport/word?_u=file:test.ureport.xml&deptId=D11&age=50,将报表file:test.ureport.xml导出成word时,传入两个参数,分别是:deptId=D11以及age=50
上述的这些URL后面除了可以用_u参数来指定要预览的报表名称外,还可以通过_i参数来指定当前要预览报表页码,也就是说如果上述这些URL后面没有_i参数,将会显示整个报表,如果有则显示_i参数指定页码对应的报表,比如URL后面跟_i=2,表示预览报表分页后第2页内容。
在http://host[:port][/context-path]/ureport/preview对应的HTML报表预览页面中,默认页面上部工具栏会显示一排按钮,用于实现打印和导出其它格式报表,如下图所示:
在上面的工具栏中,一共有9个按钮,分别用于实现打印及导出其它格式报表, 在实际使用中,如果希望这个工具栏只出现其中某些个工具的话,我们可以参数在URL后面添加_t参数来实现,_t参数如果不指定,那么会显示所有的按钮,否则只显示_t参数指定的按钮。上面这些按钮的显示分别对应参数值:1、2、3、4、5、6、7、8、9,多个参数间用“,”分隔,下面是一些示例:示例说明_t=1,3显示第一个和第三个按钮
_t=1,2,5显示第一个,第二个和第五个按钮
_t=1,2,3,4,5显示第一个,第二个,第三个,第四个和第五个按钮
如果我们不希望显示HTML预览页面的工具栏,那么设置_t=0即可。关于在线打印
在UReport2的报表预览页面中,可以看到UReport2提供了三种在线打印方式,分别是直接HTML打印、直接PDF打印以及PDF在线预览打印。这其中直接HTML打印是利用浏览器的HTML打印功能实现,能用于普通的A4纸类型报表页面的打印,同时它不能打印出报表中定义的页眉页脚,如果有定义的话。对于直接PDF打印以及PDF在线预览打印是服务端向浏览器中写入PDF流,利用Chrome、Firefox、Edge这些浏览器可以在线显示PDF功能实现的打印,这种是直接打印的PDF,所以可以应付各种复杂报表纸张类型的打印输出。Firefox在预览PDF时存在的问题
在预览PDF时,Firefox不允许当前frame外通过javascript调用其打印功能(目前来看可能是Firefox的Bug),所以我们需要手工点击其frame内部自带的打印按钮实现打印。
在业务页面中,如果需要预览打印或导出报表,那么就可以采用上述URL实现需要的功能。
在代码中使用报表
在UReport2当中,我们可以使用ExportManager实现在业务代码中导出各种类型的报表,ExportManager接口源码如下:package com.bstek.ureport.export;
import java.util.Map;
import com.bstek.ureport.export.html.HtmlReport;
/**
* @author Jacky.gao
* @since 2016年12月4日
*/
public interface ExportManager {
public static final String BEAN_ID="ureport.exportManager";
/**
* 导出Html报表
* @param file 报表模版文件名
* @param contextPath 当前项目的context path
* @param parameters 参数
* @return 返回一个HtmlReport对象,里面有报表产生的HTML及相关CSS
*/
HtmlReport exportHtml(String file,String contextPath,Map parameters);
/**
* 导出指定页码的Html报表
* @param file 报表模版文件名
* @param contextPath 当前项目的context path
* @param parameters 参数
* @param pageIndex 页码
* @return 返回一个HtmlReport对象,里面有报表产生的HTML及相关CSS
*/
HtmlReport exportHtml(String file,String contextPath,Map parameters,int pageIndex);
/**
* 导出PDF报表
* @param config 包含报表模版文件名、参数等信息的配置对象
*/
void exportPdf(ExportConfigure config);
/**
* 不分页导出Excel
* @param config 包含报表模版文件名、参数等信息的配置对象
*/
void exportExcel(ExportConfigure config);
/**
* 分页导出Excel
* @param config 包含报表模版文件名、参数等信息的配置对象
*/
void exportExcelWithPaging(ExportConfigure config);
/**
* 分页分Sheet导出Excel
* @param config 包含报表模版文件名、参数等信息的配置对象
*/
void exportExcelWithPagingSheet(ExportConfigure config);
/**
* 导出Word
* @param config 包含报表模版文件名、参数等信息的配置对象
*/
void exportWord(ExportConfigure config);
}
因为ExportManager接口实现是配置在Spring当中,所以要使用ExportManager接口,我们需要首先通过Spring的ApplicationContext取到ExportManager实例对象,我们可以通过ExportManager.BEAN_ID来取到对应的Bean实例。我们来看下如何采用ExportManager导出HTML报表,并将报表内容嵌入到一个JSP中。
首先我们需要采用报表设计器设计好一个报表模版文件,将其保存,比如报表模版保存后的文件名为demo.ureport.xml,然后在项目中创建一个JSP(这里之所以选择JSP,是因为它最为简单,可以保证所有的J2EE开发者都能看懂,实际使用时可能是MVC框架、Ajax等,但如果了解了在JSP中用法,其它的就简单了),在JSP中输入相应代码,导出Html报表,并将其写入到JSP中,完整的JSP源码如下:
HTML报表测试
导出PDF格式报表
ExportManager exportManager=(ExportManager)Utils.getApplicationContext().getBean(ExportManager.BEAN_ID);
Map parameters=new HashMap();
HtmlReport htmlReport = exportManager.exportHtml("file:demo.ureport.xml",request.getContextPath(),parameters);
//输出Css样式
out.println("
out.println(htmlReport.getStyle());
out.println("");
//输出报表内容
out.println(htmlReport.getContent());
%>
启动项目,浏览这个JSP,就可以看到生成的HTML报表内容,如下图所示:
可以看到,在运行后的JSP中,可以点击上方的链接导出PDF格式报表,下方的表格则是这个报表的HTML格式展现,实际使用时还可以在这个页面里加入一些其它与业务相关元素,具体做法这里就不再赘述。
ureport 显示html,UReport2 与业务结合相关推荐
- ureport 显示html,Ureport2报表使用问题及注意事项汇总
近期处理了一些Ureport2报表问题,对源码略有了解.现将所遇到的问题总结如下: ------------------------------------------ 问题:html显示的表格实际宽 ...
- Android 天气APP(十四)修复UI显示异常、优化业务代码逻辑、增加详情天气显示
上一篇:Android 天气APP(十三)仿微信弹窗(右上角加号点击弹窗效果).自定义背景图片.UI优化调整 添加管理城市 新版------------------- 一.添加管理城市页面 二.沉浸式 ...
- UReport2报表图片显示
UReport2报表图片显示 看UReport2图片加载的源码 package com.bstek.ureport.provider.image;import java.io.FileInputStr ...
- tableau两个不同的图合并_Tableau可视化分析-业务常用图形绘制1
微信公众号链接: Tableau可视化分析-业务常用图形绘制1mp.weixin.qq.com 哑铃图VS 火柴图 哑铃图,又名DNA图,横着看是哑铃,竖着看就是DNA,它主要用来表现两个数据点之间 ...
- java模拟银行存取_JAVA基础案例 模拟银行存取款业务
模拟银行存取款业务 编写一个Java应用程序,模拟网上银行登录及存取款业务.登录时需判断银行卡号和银行卡密码,当输入的卡号和密码都正确时,登录成功,提示当前登录的账户名,并进入下一步选择操作类型.操作 ...
- kibana 更新 索引模式_Kibana对索引动态加字段显示
本文介绍Kibana对索引动态加字段显示.在实际业务数据存入Elasticsearch索引时会有一些枚举值,这些枚举值的意义不直观,也没必要在存索引时特意加一个用于显示的字段.这种场景只需在Kiban ...
- 使用 UML 进行业务建模:理解业务用例与系统用例的相似和不同之处
來源:http://www.uml.org.cn/requirementproject/200707024.asp 作者:Arthur V. English 出处:IBM 本文来自于 Ration ...
- 基于java的银行综合业务柜台系统设计与实现(含源文件)
欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye 第一章 引言 1.1 编写目的 本测试文档的主要功能就是阐述软件的测试计划,内容,进度安排,测 ...
- 人工智能(12)---中国智能语音业务与应用发展白皮书
中国智能语音业务与应用发展白皮书> 2018年3月21日,格兰研究举办了中国智能语音业务集成发展峰会,从原有的机顶盒.智能电视等视频终端等领域的研究拓展到了智能终端.智慧家庭领域,借助此次机会格 ...
- 小米iot业务_一文看懂小米2019上半年财报:IoT平台连接设备达1.96亿台
8月20日,小米发布了今年第二季度财报.第二季度营收519.51亿元,同比增长14.8%;调整后净利润为36.4亿元,同比增长71.7%. 除了盈利能力的增强,这个季度小米在智能手机业务上的调整初见成 ...
最新文章
- html中使用地图和area,根据参数对area的颜色进行改变,AE考试题
- win10子系统ubuntu文件夹位置_win10子系统(WSL)自定义安装路径
- AWS — 重塑混合云
- 面向领域驱动的应用开发框架Apworks 2.5发布
- python代码有时候在命令行下和Python Shell中执行的结果不一样?
- iOS核心动画之CALayer-layer的创建
- 2057. 值相等的最小索引
- python(22)--面向对象1-封装
- 人工智能的炒作_为什么人工智能被过度炒作?
- pytorch损失函数(正在更新中,勿点进来看)
- GridView“GridView1”激发了未处理的事件“PageIndexChanging”
- 【网络安全】XCodeGhost事件刨根问底
- 删除win10易升更新的办法
- 自制Unity小游戏TankHero-2D(2)制作敌方坦克
- 不得不说的FUP P4K血型卡专用离心机
- 【技术文章】Understanding Spectre Meltdown Vulnerability 1
- java文件上传像素限制,JS上传图片前的限制包括(jpg jpg gif及大小高宽)等
- mysql感觉表头对不齐_表头固定为什么对不齐?
- JS--历史搜索记录的实现
- ubuntu系统的备份和还原
热门文章
- python入门心得_python学习心得:如何入门
- PowerBuilder 2018
- 4K视频质量分析 白皮书
- 北理珠计算机专业在广东排第几,北理珠2019广东美术类生源位居全省同类院校第一!...
- ascii码值大小顺序排序c语言,ascii码值的大小顺序是怎样的?
- 【Webex】加入会议是无法正常加入!提示“下载会议组件时无法获取正确的参数。 请联系技术支持以获取帮助。...
- 华为鸿蒙系统os新机,鸿蒙OS今日面世,华为将出新机搭载新系统入市场
- 个人向常用的一些函数的汇总成一个简易模板
- 如何轻松查询分析多个快递单号物流到站派件延误件
- 苹果Objective-C源代码