如何把润乾报表嵌入 web 应用中

润乾报表作为纯 JAVA 报表可以很方便地嵌入到 J2EE 页面中使用,目前润乾报表提供了多种发布方式供用户将报表嵌入到 JSP 页面。润乾报表包括参数报表和数据报表两种报表,下面分别看一下这两类报表的页面嵌入方式。

参数报表

由于参数报表大多数都和数据报表联合发布查询数据,所以这里只介绍联合使用方式(单独发布与数据报表一样)。参数报表嵌入页面时使用的标签为report:param,该标签的主要属性有 name、paramFileName 和 params。其中,name 指定了参数表单的名称,paramFileName 为参数报表模板文件名,params 为参数报表接收的参数,其格式要求为:参数名 1= 参数值 1; 参数名 2= 参数值 2…。具体使用可以参考如下书写方式:

<report:param

name="form1"

paramFileName="demo_arg.rpx"

params=""

></report:param>

数据报表

数据报表嵌入页面使用的标签为report:html,常用属性包括 name(表格名称)、srcType(源类型,可以是 file、defineBean 或 reportBean)、funcBarLocation(是否包含工具条)、needPageMark(是否需要页码)、params(报表参数,同参数报表中 params)、exceptionPage(错误提示页面)等。

属性 srcType 的不同值指定了不同的报表发布方式,以满足不同场景的需要。下面分别来看一下。

file方式

当 srcType=”file”时为 file 方式发布报表,通过 reportFileName 属性指定报表模板名称完成报表发布。此方式为最常用的报表发布方式,具体使用可以参考如下书写方式:

<report:html

srcType=”file”

name="report1"

reportFileName="demo.rpx"

funcBarLocation="top"

needPageMark="yes"

params="d\_year=2014;u\_id=10001"

exceptionPage="/reportJsp/myError2.jsp"

></report:html>

defineBean 方式

除了直接指定报表文件,还可以发布程序读入的报表定义(ReportDefine),使用这中方式需要指定 srcType=“defineBean”,具体使用可以参考如下书写方式:

<%  //读入报表定义

String reportPath = request.getRealPath("/reportFiles/api/wangge.rpx");

ReportDefine rd = (ReportDefine)ReportUtils.read(reportPath);

request.setAttribute("reportDefine",rd);

%>

<!—发布报表 -->

<report:html

name="report1"

srcType="defineBean"

beanName="reportDefine"

exceptionPage="/reportJsp/jsp/myError.jsp"

></report:html>

reportBean 方式

除了直接指定报表模板和接收报表定义,有时还需要直接使用程序计算好的报表(IReport)进行发布,此时需要指定 srcType=“reportBean”,使用时可以参考如下写法:

<%  //程序计算报表

String reportPath = request.getRealPath("/reportFiles/api/wangge.rpx");

ReportDefine rd = (ReportDefine)ReportUtils.read(reportPath);

Context cxt = new Context();    

Engine engine = new Engine(rd, cxt);

IReport iReport = engine.calc();

request.setAttribute("report", iReport);

%>

<!—发布报表 -->

<report:html name="report1"

    srcType="reportBean"

    beanName="report"

    exceptionPage="/reportJsp/jsp/myError.jsp"

></report:html>

context 方式

除了上述三种方式,还可以自定义 context 后传递给 tag 去发布,利用 context,可以传递参数和宏,还可以指定数据源、数据库连接工厂等。使用时可以参考如下写法:

<%

Context context = new Context();

//传递参数、数据源等,此处省略

request.setAttribute( “myContext”, context );

%>

<report:html ……..

  contextName=”myContext”

></report:html>

常见属性配置效果

1.功能条

配置 funcBarLocation="top" 和 needPageMark="yes" 可以在报表上方显示功能条及翻页按钮等。

imagepng

2.导出打印按钮

配置 needSaveAsWord="yes"needSaveAsExcel="yes"needSaveAsPdf="yes"needPrint=“yes” 可以显示导出 Word、Excel、Pdf 及打印按钮。

imagepng

3.固定表头

配置 needScroll=“yes” scrollWidth=“100%” scrollHeight="100%" 可以将报表表头固定。

imagepng

附 1 <report:param/> 标签属性列表

(属性名都是大小写相关,属性值必须放在双引号中)

属性名是否必填属性含义属性取值缺省值
name参数表单 form 在网页中的 ID 标识符合变量命名规则的字符串,在本网页中应是唯一的
srcType参数表单源的类型同 html 报表file
paramFileName生成参数表单的 rpx 文件名报表文件名,如为 "" 或"null",则不生成表单
beanName当参数表单源类型为 defineBean 或 reportBean 时,已保存到 request 中的 bean 的名称或报表缓存池中的缓存 ID符合变量命名规则的字符串,与保存参数表单源 bean 时的名称一致
contextName同 html 单表参数模版式报表变量名
resultPage提交参数后,显示报表结果的页面相对于应用根目录的页面 URL当前页面
target显示结果的窗体名与 html form 的 target 属性取值相同当前窗体 _self
hiddenParams一些隐含的参数,如登录用户名、用户身份等与 params 取值相同
needSubmit是否需要自动生成提交参数的按钮Yes 或 noYes
submitLabel提交钮的外观定义Html 元素或文字查询
params生成此参数表单时需用到的报表参数,一般用于下拉数据窗口中的数据过滤条件与 html 报表中的 params 相同
exceptionPage显示参数表单异常信息的 JSP 页面页面相对于应用根目录的路径名
needInputCssStyle是否需要使用报表中设计的单元格样式,如字体、颜色等Yes 或 noYes

附 2 <report:param/> 标签属性列表

(属性名都是大小写相关,属性值必须放在双引号中)

属性名是否必填属性含义        取值属性省缺值
浏览式报表和单表参数报表的公共属性  
name报表在网页中的 ID 标识符合变量命名规则的字符串,在本网页中是唯一的
srcType报表源的类型见注 1file
reportFileName当报表源类型为 file 时 要发布的报表文件报表文件名
beanName当报表源类型为 defineBean 时,已保存到 request 中的 bean 的名称符合变量命名的字符串,在与保存报表源 bean 时的名称一致,且在整个 web 的应用中应唯一
scale报表缩放显示比例实数1
params报表所需要的参数用户提交的参数值
funcBarLocation功能条的位置top,bottom,bothtop
separator功能按钮间的分隔符html 元素或文字空格
generateParamForm是否生成缺省参数及宏显示在表单yes 货 nono
funcBarFontSize功能条字体大小与 HTML 中定义字体大小相同13px
funcBarFontColor功能条字体颜色html 文件中使用的颜色black
functionBarColor功能背景颜色html 文件中使用的颜色
needSaveAsExcel是否显示(存为 excel)的功能按钮yes 货 nono
needSaveAsPdf是否显示(存为 pdf)的功能按钮yes 货 nono
needSaveAsWord是否显示(存为 word)的功能按钮yes 货 nono
needSaveAsText是否显示(存为 text)的功能按钮yes 货 nono
needPrint需要显示打印机功能吗yes 货 nono
printLabel打印扭外观定义html 元素或文字打印
needDirectPrint需要显示直接打印报表的 Applet 按钮吗yes 货 no 当为 yes,如果定义了 funcBarFontColo 和 functionBarColor,那么应该用“#FFFFF”之类的颜色值,printLabel 应该只用文字no
directPrintlmgLabel直接打印扭外观定义html 元素或文字打印
needPrintPrompt直接打印报表前是否提示yes 货 nono
needSelectPrint直接打印报表时是否选择打印机yes 货 nono
savePrintSetup是否将客户端电脑的打印设置发挥到服务器保存,以备下次打印这张报表的时候使用,该属性对直接打印也起作用yes 货 nono
printButtonHeight直接打印 Apple 按钮的高度数值像素值16px
printButtonWidth直接打印 Apple 按钮的宽度数值像素值40px
printedRaq被打印的报表文件名,用于打印与显示的报表不是同一张的情况报表文件名(。raq)相对于 reportFileHome
excelLabel存为 excel 按钮的外观定义html 元素或文字存为 Excel
pdfLabel存为 pdf 按钮的外观定义html 元素或文字存为 pdf
wordLabel存为 word 按钮的外观定义html 元素或文字存为 word
texLabel存为 textl 按钮的外观定义html 元素或文字存为 word
textDataSeparatot存为 text 时,同行单元格数据间的分隔符字符tab 建(\t)
textDataLineBreak存为 Text 时 自定义换行符换行符\n
excelUsePaperSize存为 excel 时,yes 按报表设计器的纸张尺寸,no 采用本 tag 标签中指定的 width,height 值yes 货 nono
saveAsName报表另存为 excel,pdf 或离线填报时的文件名文本与报表同名
excelPageStyle存为 excel 时的分页方式,不指定此属性,则系统弹出对话框让用户选择0 不分页 1 分页
pdfExportStyle存为 PDF 时,导出的文件分页方式及导出类型,导出类型分为图形及 TXT属性值格式为:“文件类型是否分页”文件类型取值为:graph 将文字导出为图形方式 txt 将文字导出为文本方式,1 表示分页 0 不分页
userFuncBarElements用户自定义功能条中的功能元素html 元素,可多个或多层组合,如 <table><tr><td><a href="..">xxx</a></td></tr></table>
needScroll是否添加滚动轴,添加后报表不分页yes 货 nono
scrollWidth固定表头报表显示宽度整数,像素或者百分百如 80%600
scrollBorder固定表头报表的边框html 边框表示方法如:"border:1px solid red","border-top:1px solid blue;border-left:1px solid green;..."
scrollHeight固定表头报表的显示高度整数,像素或者百分百如 80%400
appletJarName用于报表打印的 applet 文件名*.jar 或者 dir/…/*.jarrunqianReportApplet.jar
exceptionPage显示报表异常信息的 JSP 页面页面相对于应用根目录的路径名
needLinkStyle单元格有超链接属性时,是否用设计的字体属性显示yes 货 noyes
calculateListenel报表计算前后的 java 监听类java 类名
paperType纸张类型纸张类型 如 A4,B5报表设计纸张类型
paperWidth纸张宽度整数(毫米,像素,英寸报表设计纸张宽度
paperHeight纸张高度整数(毫米,像素,英寸报表设计纸张高度
leftMargin左边距整数(毫米,像素,英寸报表设计纸张左边距
rightMargin右边距整数(毫米,像素,英寸报表设计纸张右边距
topMargin上边距整数(毫米,像素,英寸报表设计纸张上边距
bottomMargin下边距整数(毫米,像素,英寸报表设计纸张下边距
serverPagePrintapplet 打印时是否采用服务器分页后再按页传输的方式。一般大数据量的报表采用此方式yes 货 noyes
浏览式报表的属性
useCache显示此报表是否从缓存系统中取已经计算好的报表yes 货 no,如果是实时报表应该选择为 noyes
timeout从缓存中取多少分钟内产生的报表,如果没有在次此时间内产生的报表,则产生一个新报表整数,表示分钟  负数表示不限时间-1
width报表分页宽度整数,单位为 PX 负数表示无穷大报表设计页面宽度
height报表分页高度整数,单位为 PX 负数表示无穷大报表设计页面高度
columns报表分栏数整数报表设计分栏数
needPageMark是否显示报表页数及翻页功能yes 货 noyes
pageMarkLabel报表页数显示扭的外观定义html 元素或文字,用 {currPage} 表示当前页号,{totalPage}表示总页数第 {currPage} 页 共 {totalPage} 页
firstPageLabel翻到第一页的功能按钮外观定义html 元素或文字前一页
prevPageLabel翻到前一页的功能按钮外观定义html 元素或文字上一页
nextPageLabel翻到后一页的功能按钮外观定义html 元素或文字下一页
lastPageLabel翻到最后页的功能按钮外观定义html 元素或文字最后页
displayNolinkPageMark是否显示无超链接的页码标识(如第一页时的“最前页”和“上一页”yes 货 nono
单表填报式报表的属性(包括行式报表)  
submit提交按钮外观定义html 元素或文字提交
submitTarget显示提交结果的窗口名,如果取值不是 _self,则当保存发生异常时,因当前输入页面还保留,故用户输入数据不会丢失与 html 中的 from 的 target 属性相同_self
validOnSubmit是否在提交时进行有效性检验  1 设计单元格的有效性验证为立即校验                       2 tag 中设置属性 validOnSubmit="no" 这样用户输入不合法值时会弹出信息提示错误,用户确定后可以修改或不修改,达到警告的目的,提交数据时不会再校验yes 货 noyes
needOfflineInput是否可以离线填报yes 货 nono
offline离线保存按钮定义html 元素或文字保存到本机
contextName见注释 2变量名
needImportExcel是否可以从 excel 文件上载数据来填报yes 货 no 或者“yes,0" 表示可以上载到页面中,但禁止直接上载到数据库no
importExcelLabel导入 excel 文件按钮定义html 元素或文字从 excel 导入
imputListener保存到数据前后的 java 监听器类java 类名 
backAndRefresh提交数据以后,是否返回页面并刷新页面yes 或 no 或 url,若为 url 则提交后将定位到此指定的 urlyes
selectText单元格获得焦点时,是否选中单元格的内容yes 或 nono
promptAfterSave是否弹出提示数据以保存yes 或 noyes
saveDataByListener是否由用户写的填报监听器来保存数据yes 或 no,为 yes 时则报表系统不保存数据,只向监听器返回一组 SQL 语句no
autoCalcOnlyOnSubmit只有在提交数据时执行自动运算yes 或 no,在填报单元格很多造成移动光标慢时可设为 yesno
inputExceptionPage显示填报表保存数据时的异常信息的 JSP 页面页面相对于应用根目录的路径名
keyRepeatError插入新记录时,主键重复是否报错yes 或 no,为 yes 时则报错,为 no 是则用新数据更新原记录no
行式填报报表的属性   
insertRowLabel插入行外观按钮定义html 元素或文字插入
appendRowLabel添加行外观按钮定义html 元素或文字添加
deleteROWLabel删除行。。html 元素或文字删除
importExcelAppend行式报表填报中是否采用追加行的方式导入 EXCEL 文件中的数据区行yes 或 no,属性为 yes 时,在当前扩展区尾部追加 excel 文件中所有的数据区行。   属性为 NO 时,在当前光标所在行开始,用 excel 文件中的数据区进行逐行替换当前扩展区的数据行。替换完以后,其余的行采用追加导入的方式yes

注 1:srcType 的取值:

(1)如要发布的报表源为报表文件,其值为 file。

(2)如要发布的报表源为经过 API 处理的

com.raqsfot.report.model.ReportDefine 对象,则其值为 defineBean。

(3)如要发布的报表源为经过 API 处理的

com.raqsoft.report.usermodel.IReport 对象,则其值为 reportBean。

注 2:如果调用 TAG 前,是用 API 生成的 Context 对象来运算报表,那么应将此对象传给 TAG,示例如下:

<%

……..

Context context = new Context();

…….

request.setAttribute( “myContext”, context );

%>

<report:html ……..

contextName=”myContext”

></report:html>

注 3:如果 scrollWidth 和 scrollHeight 采用百分比的格式,那么滚动区域的高度和宽度是根据 jsp 中报表外面的元素的高度和宽度而定的,如果报表外面的元素没有指定高度和宽度,可能会出问题。

举例如下,在自定义的 jsp 中,首先定义在报表外面 table 元素的 width 和 height,这样可以保证滚动区域正常显示。

<table style="width:40%; height:80%;overflow:hidden;table-layout:fixed">

<tr><td valign=top>

<report:html name="report1" reportFileName="<%=file%>"

needScroll="yes"

scrollWidth="80%"

scrollHeight="50%"

......

/>

</td></tr></table>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值