html 模式发布报表

阅读(13388) 标签: html标签, tag标签,

本章主要介绍html模式发布报表的原理、用途及详细说明。

实例请参考TAG实例 / html模式发布报表

 

原理和用途:

如下图:通过定义tag标签的属性及其值,在不需用户调用润乾报表API情况下,用tag标签完成报表的解析及运算,并按用户配置的属性要求将html文件流输出到客户端。

1.1.1:用tag标签发布报表

详细说明:

html报表在JSP文件中用<prefix:html>标签来发布,prefix是用户在JSP文件头

指定tag定义文件时指定的前缀名。该定义语句如下所示:

<%@taglib uri="/WEB-INF/raqsoftReport.tld" prefix="report" %>

此定义语句必须写在JSP的开头,其中prefix的值可以自己指定,但tag标签中的前缀必须与其保持一致。

然后在要发布报表的地方用上面介绍的tag标签来发布,如:

<report:html name=”…” reportFileName=”…” …./>

此标签的属性说明见下表:

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

属性名

是否必填

属性含义

属性取值

缺省值

浏览式报表和单表参数报表的公共属性

name

报表在网页中的ID标识

符合变量命名规则的字符串,在本网页中应是唯一的

srcType

报表源的类型

见注1

file

reportFileName

当报表源类型为file时,要发布的报表文件

报表文件名

beanName

当报表源类型为defineBeanreportBean时,已保存到request中的bean的名称

符合变量命名规则的字符串,与保存报表源bean时的名称一致,且在整个web应用中应唯一

contextName

bean的方式发布报表时,计算出报表bean时用的Context对象,存在session中的名称

存储在session中的名称

scale

报表缩放显示比例

实数

1.0

funcBarLocation

功能条的位置

top, bottom, both

top

separator

各功能钮间的分隔符

html元素或文字

空格

generateParamForm

是否生成缺省报表参数输入表单

yesno

no

params

报表所需要的参数

用户提交的参数值

funcBarFontFace

功能条的字体

字体名称

宋体

funcBarFontSize

功能条的字体大小

html文件中定义字体大小相同

13px

funcBarFontColor

功能条的字体颜色

html文件中使用的颜色

black

functionBarColor

功能条背景色

html文件中使用的颜色

无颜色

needSaveAsExcel

需要显示将报表存为Excel的功能钮吗

yesno

no

needSaveAsPdf

需要显示将报表存为PDF的功能钮吗

yesno

no

needSaveAsText

需要显示将报表存为Text的功能钮吗

yesno

no

needSaveAsWord

需要显示将报表存为Word的功能钮吗

yesno

no

needSaveAsPicture

需要显示将报表存为图片的功能钮吗

yesno

no

needSaveAsOfd

需要显示将报表存为OFD的功能钮吗

yesno

no

needPrint

需要显示打印报表的功能钮吗

yesno

no

needPdfPrint

是否需要生成PDF打印的功能按钮

yesno

no

pdfPrintLabel

PDF打印按钮的内容

html元素或文字

PDF打印

printLabel

打印按钮外观定义

html元素或文字

打印

needDirectPrint

需要显示直接打印报表的Applet按钮吗

yesno,当为yes时,如果定义了funcBarFontColorfunctionBarColor, 那么应该用”#FFFFFF”之类的颜色值,printLabel应该只用文字

no

directPrintLabel

直接打印钮外观定义

html元素或文字

直接打印

needPrintPrompt

直接打印报表前是否需要提示确认

yesno

no

needSelectPrinter

直接打印报表时可否选择打印机

yesno

no

savePrintSetup

是否将客户端电脑的打印设置发回服务器保存,以备下次打印这张报表时使用,该属性对直接打印也起作用

yesno

no

printedRaq

被导出/打印的报表文件名,用于导出/打印与显示的报表不是同一张时的情况

报表文件名(.rpx),相对于raqsoftConfig.xml文件下<Report>里的<home>属性所对应的路径

excelLabel

存为Excel钮外观定义

html元素或文字

存为Excel

pdfLabel

存为PDF钮外观定义

html元素或文字

存为PDF

textLabel

存为Text钮外观定义

html元素或文字

存为Text

wordLabel

存为Word钮外观定义

html元素或文字

存为Word

ofdLabel

存为OFD钮外观定义

html元素或文字

存为OFD

csvDataSeparator

存为csv时,同行单元格数据间的分隔符

字符

逗号

textDataSeparator

存为Text时,同行单元格数据间的分隔符

字符

TAB键(\t

textDataLineBreak

存为Text时,自定义换行符

换行符

\n

exportDisp4text

导出Text文件时是否导出显示值

yesno

no

excelUsePaperSize

存为Excel时:yes按报表设计时的纸张尺寸,no采用本tag标签中指定的widthheight

yesno

no

excelFormat

导出Excel的默认格式

导出Excel两种格式(xlsxlsx)中的一种

xls

saveAsName

报表另存为ExcelPDFWordText的文件名(不用带扩展名)

文本

与报表同名

excelPageStyle

存为Excel时的分页方式,不指定此属性值,则系统弹出对话框让用户选

0(不分页)或1(分页)

pdfExportStyle

存为PDF时,导出的文件分页方式及导出类型,导出类型分为图形方式及Text方式。

属性值格式为: "文件类型,是否分页"

文件类型取值为:

graph: 将文字导出为图形方式

Text:将文字导出为文本方式

1表示要分页,0表示不分页

ofdExportStyle

存为OFD时,导出的文件分页方式及导出类型,导出类型目前仅支持图形方式。

属性值格式为: "文件类型,是否分页"

文件类型取值为:

graph: 将文字导出为图形方式

1表示要分页,0表示不分页

userFuncBarElements

用户自定义的功能条中的功能元素

html元素,可多个或多层组合,如<table><tr><td>

<a href=”…”>xxx</a>

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

needScroll

是否固定上表头和左表头

固定表头后,页面报表不分页,分页方式设置无效

yesno

no

needPagedScroll

固定表头后是否分页,needScrollno时设置失效

yesno

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文件名

*.jar或者dir/.../*.jar

raqsoftReportApplet.jar

exceptionPage

显示报表异常信息的JSP页面

页面相对于应用根目录的路径名

needLinkStyle

单元格有超链接属性时,是否用设计的字体属性显示

yesno

yes

paperType

纸张类型

纸张类型值,比如A4B5

报表设计纸张类型

paperWidth

纸张宽度

整数(毫米,像素,英寸)

报表设计纸张宽度

paperHeight

纸张高度

整数(毫米,像素,英寸)

报表设计纸张高度

leftMargin

左边距

整数(毫米,像素,英寸)

报表设计左边距

rightMargin

右边距

整数(毫米,像素,英寸)

报表设计右边距

topMargin

上边距

整数(毫米,像素,英寸)

报表设计上边距

bottomMargin

下边距

整数(毫米,像素,英寸)

报表设计下边距

serverPagedPrint

applet打印时是否采用服务器分页后再按页传输的方式。一般大数据量的报表采用此方式

yesno

yes

mirrorPrint

打印时是否使用镜像打印

取值为yesno

no

reportEnterUrl

访问此报表的url地址,当访问地址不是jsp时需要指定

访问报表的url地址

printerName

默认打印机名称

操作系统中显示的打印机名称

generateCellId

是否生成单元格ID

yesno

no

isOlap

是否提供展开、收拢的功能,将该报表称为OLAP式折叠报表

yes no

no

isTreeTable

是否以树形报表展现,将该报表称为树形报表

yes no

no

foldType

设置折叠报表的行列折叠类型,适用于OLAP式折叠报表和树形报表

both(行列都折叠)row(只有行向折叠)col(只有列向折叠)

both

foldIcon

折叠图标的类型,适用于OLAP式折叠报表和树形报表

plus(加减号)arrow(箭头)

plus

foldOnBegin

折叠报表初始展现时折叠到第几层,适用于OLAP式折叠报表和树形报表

yes(全折叠)no(全展开)或整数(可以看见的层数)

no

base64Image

是否将图片或背景图输出为base64格式

yes no

no

modifiable

是否可在web页面中修改单元格数据,此属性必须和报表中的“能否修改”属性同时使用,使用此属性时分页无效

yes no

no

paramCheck

是否对禁用参数值做校验。

禁用参数值可通过在WEB-INF/raqsoftConfig.xml中的disallowedParamWordList 属性中配置

yes no

yes

reportAlign

设置报表的横向显示位置,needScroll属性值为no时,本属性无效

leftcenter

center

matchScreen

报表的自适应方式。使用matchScreen属性时,jsp的语法应类似mobile/mbReport.jsp那样

数值0-8

按设计尺寸展现,不用适应容器。

 

始终用报表宽度适应容器宽度,报表高度同比例缩放

 

始终用报表高度适应容器高度,报表宽度同比例缩放

 

竖屏时,相当于mode=2;横屏时,相当于mode=1

 

竖屏时,相当于mode=1;横屏时,相当于mode=2

 

  5 竖屏时,报表高和宽均分别适应容器的高和宽;横屏时,不需适应容器

 6 竖屏时,不需适应容器;横屏时,报表高和宽均分别适应容器的高和宽

 7 报表高和宽均分别适应容器的高和宽

按宽适应容器,报表高度保持不变

 

  横屏定义为容器宽度大于高度,竖屏定义为容器高度大于宽度。

1

pdfPrintPages

PDF打印的页码编号

整数,比如"1,3""3-6,8,10-14"

打印全部

tableLayout

设置表格的布局

auto:自动表格布局,列宽度由没有折行的单元格最宽内容设定。

fixed:固定表格布局,列宽由表格宽度和列宽度设定,与单元格内容无关。

fixed

directPrintCopies

applet直接打印时,指定打印几份

整数

1

directPrintPages

applet直接打印时,指定到打印的页码编号

整数,比如"1,3""3-6,8,10-14"

打印全部

displayReport

是否显示报表

yesno

yes

needImportEasyui

是否需要引入easyuijscss文件,如需修改easyui的主题风格可参考修改easyui插件的主题小节

yesno

yes

theme

编辑控件的外观主题风格

default,black,bootstrap,gray,metro

default

bigPage

当前报表是否始终用大页面机制展现。详见注5

yesnoauto,默认no。当值为yes时,当前报表始终用大页面机制展现;当值为auto,则判断html长度大于50万时使用大页面机制。

no

mobileMode

指定报表是否使用手机模式渲染

yesno,默认值为空。

yes:按照手机模式渲染。

no:按照电脑模式渲染。

(不指定此参数时程序自动检测浏览器的user-agent来判断是手机浏览器还是电脑浏览器)

浏览式报表的属性

useCache

显示此报表时是否从缓存系统中取已经计算好的报表

yesno

如果是实时报表,应该设为no

yes

timeout

从缓存系统中取多少分钟内产生的报表,如果没有此时间内的报表,则产生一个新报表

整数,表示分钟

负数表示不限时间

-1

width

报表分页宽度

整数,单位为px,负数表示无穷大

报表设计页面宽度

height

报表分页高度

整数,单位为px,负数表示无穷大

报表设计页面高度

columns

报表分栏数

整数

报表设计分栏数

needPageMark

是否显示报表页数及翻页功能

yesno

yes

firstPageLabel

翻到第一页的功能钮外观定义

html元素或文字

最前页

prevPageLabel

翻到前一页的功能钮外观定义

html元素或文字

上一页

nextPageLabel

翻到后一页的功能钮外观定义

html元素或文字

下一页

lastPageLabel

翻到最后页的功能钮外观定义

html元素或文字

最后页

displayNoLinkPageMark

是否显示无超链接的页码标识(如第一页时的“最前页”和“上一页”

yesno

no

1srcType的取值:

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

(2)  如要发布的报表源为经过API处理的com.raqsoft.report.model.ReportDefine对象,则其值为defineBean

(3)  如要发布的报表源为经过API处理的com.raqsoft.report.usermodel.IReport对象,则其值为reportBean

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

<%

……..

Context context = new Context();

…….

session.setAttribute( “myContext”, context );

%>

<report:html ……..

contextName=”myContext”

/>

3

折叠报表相关的标签属性: isTreeTable, isOlap,foldIcon,foldOnBegin

(1) OLAP折叠报表(isOlap)和树形报表(isTreeTable)两种展现方式互斥,因此isOlapisTreeTable不可以同时为yes

(2) 折叠报表同时支持固定表头

(3) 折叠报表不支持分页

(4) 折叠报表是js的功能,因此仅限于网页支持。打印和导出时与普通报表一致

(5) 树形报表对浏览器没有要求,OLAP折叠报表要求IE浏览器为IE9以上版本,其它类浏览器不限

(6) 树形报表格式要求:分组格与它的子格不在同一行上,不能有行上的全包含或半包含关系。

(7) OLAP折叠报表格式要求:必须全包含,并且必须给每个分组都加上一个统计行,如果分组格是纵向扩展,统计行必须与分组格同行,如果是横向扩展,统计行必须与分组格同列。

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

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

<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>

5

bigPage作用于要展现的一页有很多单元格的报表。大页面报表生成的html比较大,直接输出到页面时,传输时间比较长,传到页面后,easyui进行渲染的时间也很长,导致页面展现很慢。

html标签展现大页面报表时,不直接往页面输出,先把报表的html部分(table元素)存在服务器,其它部分输出到页面,等easyui渲染结束后,再用js取回展现,html是存在session的,只是存很短的时间,js取走后就删除了。

1、用户自己增加标签属性bigPage,可选yesnoauto,默认no。当值为yes时,当前报表始终用大页面机制展现;当值为auto,则判断html长度大于50万时使用大页面机制。50万是预估值,可以在实用过程中调整。

6

paramCheck是否对禁用参数值做校验。默认是yes,会用内置的检测器做检查,如果不想对禁用参数值做校验,可以在预览的jsp中设置tag属性paramCheck = "no"

7

base64Image 是否将图片或背景图输出为base64格式。适用于带有少量图片的报表,图片过多时,大量的base64数据输出到页面可能导致加载效率下降。