如何利用FineReport自定义批量导出

如何利用FineReport自定义批量导出,第1张

1.描述

FineReport支持多种不同的导出方式,也可以使用js自定义导出按钮。在使用自定义导出按钮后需要查看导出的文件内容是否和报表查询一致,同时d窗新页面标签名为自定义名称,省去查询按钮。

2.示例

以报表默认模版GettingStarted.cpt为例,在参数面包添加一个按钮,名称为导出,添加一个标签控件和日期控件名称为Riqi

在A20单元格输入="数据时间:" + $Riqi,合并B2~D2单元格,输入="导出日期" + today()

在导出按钮设置JS事件

var DIQU = this.options.form.getWidgetByName("Diqu").getValue() // 获取地区控件的值

var RIQI = this.options.form.getWidgetByName("Riqi").getValue() // 获取日期控件的值

为了导出excel需要利用URL直接导出的方法

var REPORT_URL='/WebReport/ReportServer?reportlet=frist.cpt&Diqu='+DIQU+'&Riqi='+RIQI+'&format=excel' //导出excel

如果URL参数中含有特殊字符还需要对URL进行转义

window.location=(FR.cjkEncode(REPORT_URL)) //调用cjkEncode对URL进行转义

更改标签页名称并打开新窗口刷新数据

window.open('/WebReport

/ReportServer?reportlet='+FR.cjkEncode("frist")+'.cpt&

Diqu='+FR.cjkEncode(DIQU)+'&Riqi='+RIQI)// 更改标签页名称并打开新窗口刷新数据

完整代码如下

var DIQU = this.options.form.getWidgetByName("Diqu").getValue()

var RIQI = this.options.form.getWidgetByName("Riqi").getValue()

var REPORT_URL='/WebReport/ReportServer?reportlet=frist.cpt&Diqu='+DIQU+'&Riqi='+RIQI+'&format=excel'

window.location=(FR.cjkEncode(REPORT_URL))

window.open('/WebReport/ReportServer?reportlet='+FR.cjkEncode("frist")+'.cpt&Diqu='+FR.cjkEncode(DIQU)+'&Riqi='+RIQI)

window.location=(FR.cjkEncode(REPORT_URL))

亲你好,新建普通模板,在A1单元格中添加【按钮控件】,命名为“点击d框”,如下所示:

2)添加点击事件

给【按钮控件】添加点击事件,添加iframed框并在其中嵌入GettingStarted.cpt模板,如下图所示:

设置参数cc值为remoteServletURL,用来获取报表路径

js代码如下:

var iframe = $("

iframe.attr("src", cc+"?reportlet=GettingStarted.cpt")// 给iframe添加src属性

var o = {

width : 700, //对话框宽度

height: 500 //对话框高度

}

FR.showDialog("添加", o.width, o.height, iframe,o)//d出对话框

3)保存模板

保存模板,选择填报预览,实现效果如描述中所示。

按钮的快捷按键设置

1. 描述

有时我们希望能够通过快捷键来触发按钮,我们可以对按钮控件进行快捷键设置来实现。

2. 设置方法

可以通过控件的控件设置来添加或修改触发快捷键。

例如,查询按钮中设置快捷键为enter,则按enter就会触发查询按钮:

注:FineReport只支持部分的键设置为快捷键,即不是所有的键都可以设置快捷键。

当将鼠标移至属性表>高级>快捷键时,会出现可以设置的快捷键。支持的快捷键如下图所示,若设置了不属于上述快捷键的按键,快捷键将会无效:

水晶报表的话不是很清楚,一般情况下我用的都是finereport,它可以直接通过模板传递参数从而进行打印,效果和题主所需要的差不多。

报表主体样式如下图:

两个文本控件的控件名字分别为,NAME和SEX。

给打印按钮添加点击事件,如下:

var name=FR.cjkEncode($("[name='NAME']").val())

var sex=FR.cjkEncode($("[name='SEX']").val())

para={

name:name,

sex:sex

}

var config={

url:"http://localhost:8075/WebReport/ReportServer?reportlet=son.cpt",

isPopUp:false,

data:para

}

FR.doURLPDFPrint(config)

保存模板为main.cpt。

子模板报表主体

保存模板参数为son.cpt,子模板的名字和路径应该与主模板js里面的名字和路径一致。

效果查看

以填报预览的方式打开main.cpt,填写姓名和性别,点击打印按钮,如下图:


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/7986090.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-12
下一篇2023-04-12

发表评论

登录后才能评论

评论列表(0条)

    保存