本章主要介绍html模式发布报表的原理、用途及详细说明。
◆ 实例请参考TAG实例 / html模式发布报表
原理和用途:
如下图:通过定义Tag标签的属性及其值,在不需用户调用润乾报表API情况下,用tag标签完成报表的解析及运算,并按用户配置的属性要求将HTML文件流输出到客户端。
图1.1.1:用tag标签发布报表
详细说明:
html报表在JSP文件中用<prefix:html>标签来发布,prefix是用户在JSP文件头
指定tag定义文件时指定的前缀名。该定义语句如下所示:
<%@taglib uri="/WEB-INT/raqsoftReport.tld" prefix="report" %>
此定义语句必须写在JSP的开头,其中prefix的值可以自己指定,但tag标签中的前缀必须与其保持一致。
然后在要发布报表的地方用上面介绍的tag标签来发布,如:
<report:html name=”…” reportFileName=”…” …./>
此标签的属性说明见下表:
(属性名都是大小写相关,属性值必须放在双引号中)
属性名 |
是否必填 |
属性含义 |
属性取值 |
缺省值 |
|
浏览式报表和单表参数报表的公共属性 |
|||||
name |
是 |
报表在网页中的ID标识 |
符合变量命名规则的字符串,在本网页中应是唯一的 |
无 |
|
srcType |
否 |
报表源的类型 |
见注1 |
file |
|
reportFileName |
否 |
当报表源类型为file时,要发布的报表文件 |
报表文件名 |
无 |
|
beanName |
否 |
当报表源类型为defineBean或reportBean时,已保存到request中的bean的名称 |
符合变量命名规则的字符串,与保存报表源bean时的名称一致,且在整个WEB应用中应唯一 |
无 |
|
contextName |
否 |
用bean的方式发布报表时,计算出报表bean时用的Context对象,存在request中的名称 |
存储在request中的名称 |
无 |
|
scale |
否 |
报表缩放显示比例 |
实数 |
1.0 |
|
funcBarLocation |
否 |
功能条的位置 |
top, bottom, both |
top |
|
separator |
否 |
各功能钮间的分隔符 |
html元素或文字 |
空格 |
|
generateParamForm |
否 |
是否生成缺省报表参数输入表单 |
yes或no |
no |
|
params |
否 |
报表所需要的参数 |
用户提交的参数值 |
无 |
|
funcBarFontFace |
否 |
功能条的字体 |
字体名称 |
宋体 |
|
funcBarFontSize |
否 |
功能条的字体大小 |
与html文件中定义字体大小相同 |
13px |
|
funcBarFontColor |
否 |
功能条的字体颜色 |
html文件中使用的颜色 |
black |
|
functionBarColor |
否 |
功能条背景色 |
html文件中使用的颜色 |
无颜色 |
|
needSaveAsExcel |
否 |
需要显示将报表存为Excel的功能钮吗 |
yes或no |
no |
|
needSaveAsPdf |
否 |
需要显示将报表存为PDF的功能钮吗 |
yes或no |
No |
|
needSaveAsText |
否 |
需要显示将报表存为Text的功能钮吗 |
yes或no |
No |
|
needSaveAsWord |
否 |
需要显示将报表存为Word的功能钮吗 |
yes或no |
No |
|
needPrint |
否 |
需要显示打印报表的功能钮吗 |
yes或no |
No |
|
needPdfPrint |
否 |
是否需要生成pdf打印的功能按钮 |
yes或no |
No |
|
pdfPrintLabel |
否 |
pdf打印按钮的内容 |
html元素或文字 |
pdf打印 |
|
printLabel |
否 |
打印按钮外观定义 |
html元素或文字 |
打印 |
|
needDirectPrint |
否 |
需要显示直接打印报表的Applet按钮吗 |
yes或no,当为yes时,如果定义了funcBarFontColor和functionBarColor, 那么应该用”#FFFFFF”之类的颜色值,printLabel应该只用文字 |
No |
|
directPrintLabel |
否 |
直接打印钮外观定义 |
html元素或文字 |
打印 |
|
needPrintPrompt |
否 |
直接打印报表前是否需要提示确认 |
yes或no |
no |
|
needSelectPrinter |
否 |
直接打印报表时可否选择打印机 |
yes或no |
no |
|
savePrintSetup |
否 |
是否将客户端电脑的打印设置发回服务器保存,以备下次打印这张报表时使用,该属性对直接打印也起作用 |
yes或no |
no |
|
printedRaq |
否 |
被打印的报表文件名,用于打印与显示的报表不是同一张时的情况 |
报表文件名(.rpx),相对于reportFileHome |
无 |
|
excelLabel |
否 |
存为Excel钮外观定义 |
html元素或文字 |
存为Excel |
|
pdfLabel |
否 |
存为PDF钮外观定义 |
html元素或文字 |
存为PDF |
|
textLabel |
否 |
存为Text钮外观定义 |
html元素或文字 |
存为Text |
|
wordLabel |
否 |
存为Word钮外观定义 |
html元素或文字 |
存为Word |
|
textDataSeparator |
否 |
存为Text时,同行单元格数据间的分隔符 |
字符 |
TAB键(\t) |
|
textDataLineBreak |
否 |
存为Text时,自定义换行符 |
换行符 |
\n |
|
exportDisp4text |
否 |
导出text文件时是否导出显示值 |
yes或no |
no |
|
excelUsePaperSize |
否 |
存为EXCEL时:yes按报表设计时的纸张尺寸,no采用本TAG标签中指定的width,height值 |
yes或no |
no |
|
excelFormat |
否 |
导出excel的默认格式 |
导出excel两种格式(xls,xlsx)中的一种 |
xls |
|
saveAsName |
否 |
报表另存为Excel、PDF的文件名(不用带扩展名) |
文本 |
与报表同名 |
|
excelPageStyle |
否 |
存为Excel时的分页方式,不指定此属性值,则系统弹出对话框让用户选 |
0(不分页)或1(分页) |
无 |
|
pdfExportStyle |
否 |
存为PDF时,导出的文件分页方式及导出类型,导出类型分为图形方式及text方式。 |
属性值格式为: "文件类型,是否分页" 文件类型取值为: graph: 将文字导出为图形方式 text:将文字导出为文本方式 1表示要分页,0表示不分页 |
无 |
|
userFuncBarElements |
否 |
用户自定义的功能条中的功能元素 |
Html元素,可多个或多层组合,如<table><tr><td> <a href=”…”>xxx</a> </td></tr></table> |
无 |
|
needScroll |
否 |
是否固定上表头和左表头 固定表头后,页面报表不分页,分页方式设置无效 |
yes或no |
no |
|
needPagedScroll |
否 |
固定表头后是否分页,needScroll为no时设置失效 |
yes或no |
no |
|
scrollWidth |
否 |
固定表头报表的显示宽度 |
整数,象素值 或者百分数,如80% |
600 |
|
scrollHeight |
否 |
固定表头报表的显示高度 |
整数,象素值 或者百分数,如80% |
400 |
|
scrollBorder |
否 |
固定表头报表的边框 |
HTML的边框表示法,如:“border:1px solid red”,“border-top: 1px solid blue; border-left: 1px solid green;……” |
无 |
|
appletJarName |
否 |
用于报表打印的applet文件名见注4 |
*.jar或者dir/.../*.jar |
raqsoftReportApplet.jar |
|
exceptionPage |
否 |
显示报表异常信息的JSP页面 |
页面相对于应用根目录的路径名 |
无 |
|
needLinkStyle |
否 |
单元格有超链接属性时,是否用设计的字体属性显示 |
yes或no |
yes |
|
paperType |
否 |
纸张类型 |
纸张类型值,比如A4,B5 |
报表设计纸张类型 |
|
paperWidth |
否 |
纸张宽度 |
整数(毫米,像素,英寸) |
报表设计纸张宽度 |
|
paperHeight |
否 |
纸张高度 |
整数(毫米,像素,英寸) |
报表设计纸张高度 |
|
leftMargin |
否 |
左边距 |
整数(毫米,像素,英寸) |
报表设计左边距 |
|
rightMargin |
否 |
右边距 |
整数(毫米,像素,英寸) |
报表设计右边距 |
|
topMargin |
否 |
上边距 |
整数(毫米,像素,英寸) |
报表设计上边距 |
|
bottomMargin |
否 |
下边距 |
整数(毫米,像素,英寸) |
报表设计下边距 |
|
serverPagedPrint |
否 |
applet打印时是否采用服务器分页后再按页传输的方式。一般大数据量的报表采用此方式 |
yes或no |
yes |
|
mirrorPrint |
否 |
打印时是否使用镜像打印 |
取值为yes或no |
no |
|
reportEnterUrl |
否 |
访问此报表的url地址,当访问地址不是jsp时需要指定 |
访问报表的url地址 |
无 |
|
printerName |
否 |
默认打印机名称 |
操作系统中显示的打印机名称 |
无 |
|
generateCellId |
否 |
是否生成单元格ID |
yes或no |
no |
|
isOlap |
否 |
是否提供展开、收拢的功能,将该报表称为OLAP式折叠报表 |
yes 或 no |
no |
|
isTreeTable |
否 |
是否以树形报表展现,将该报表称为树形报表 |
yes 或 no |
no |
|
foldIcon |
否 |
折叠图标的类型,适用于OLAP式折叠报表和树形报表 |
plus(加减号)或arrow(箭头) |
plus |
|
foldOnBegin |
否 |
折叠报表初始展现时折叠到第几层,适用于OLAP式折叠报表和树形报表 |
yes(全折叠)、no(全展开)或整数(可以看见的层数) |
no |
|
modifiable |
否 |
是否可在WEB页面中修改单元格数据,此属性必须和报表中的“能否修改”属性同时使用,使用此属性时分页无效 |
yes 或 no |
no |
|
paramCheck |
否 |
是否对禁用参数值做校验。 禁用参数值可通过在WEB-INF/raqsoftConfig.xml中的disallowedParamWordList 属性中配置 |
yes 或 no |
yes |
|
reportAlign |
否 |
设置报表的横向显示位置,needScroll属性值为no时,本属性无效 |
left或center |
center |
|
浏览式报表的属性 |
|||||
useCache |
否 |
显示此报表时是否从缓存系统中取已经计算好的报表 |
yes或no 如果是实时报表,应该设为no |
yes |
|
timeout |
否 |
从缓存系统中取多少分钟内产生的报表,如果没有此时间内的报表,则产生一个新报表 |
整数,表示分钟 负数表示不限时间 |
-1 |
|
width |
否 |
报表分页宽度 |
整数,单位为px,负数表示无穷大 |
报表设计页面宽度 |
|
height |
否 |
报表分页高度 |
整数,单位为px,负数表示无穷大 |
报表设计页面高度 |
|
columns |
否 |
报表分栏数 |
整数 |
报表设计分栏数 |
|
needPageMark |
否 |
是否显示报表页数及翻页功能 |
yes或no |
yes |
|
firstPageLabel |
否 |
翻到第一页的功能钮外观定义 |
html元素或文字 |
最前页 |
|
prevPageLabel |
否 |
翻到前一页的功能钮外观定义 |
html元素或文字 |
上一页 |
|
nextPageLabel |
否 |
翻到后一页的功能钮外观定义 |
html元素或文字 |
下一页 |
|
lastPageLabel |
否 |
翻到最后页的功能钮外观定义 |
html元素或文字 |
最后页 |
|
displayNoLinkPageMark |
否 |
是否显示无超链接的页码标识(如第一页时的“最前页”和“上一页” |
yes或no |
no |
|
注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”
/>
注3:
折叠报表相关的标签属性: isTreeTable, isOlap,foldIcon,foldOnBegin
(1) OLAP折叠报表(isOlap)和树形报表(isTreeTable)两种展现方式互斥,因此isOlap与isTreeTable不可以同时为yes
(2) 折叠报表同时支持固定表头
(3) 折叠报表不支持分页
(4) 折叠报表是js的功能,因此仅限于网页支持。打印和导出时与普通报表一致
(5) 树形报表对浏览器没有要求,OLAP折叠报表要求IE浏览器为IE9以上版本,其它类浏览器不限
(6) 树形报表格式要求:分组格与它的子格不在同一行上,不能有行上的全包含或半包含关系。
(7) OLAP折叠报表格式要求:必须全包含,并且必须给每个分组都加上一个统计行,如果分组格是纵向扩展,统计行必须与分组格同行,如果是横向扩展,统计行必须与分组格同列。
注4:如果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>