单元格表单(lczExcel)允许数据填报,其集成方式与智能报表(lczReport)基本相同,在其基础上增加了部分用于控制数据回写及校验的请求参数。

1 集成说明

请参考智能报表集成说明。

2 访问规范

请参考智能报表访问规范说明。

3 请求参数

基本参数请参考智能报表请求参数说明,电子表格表单增加了填报时特有的参数。
填报参数

参数名
类型
默认值
说明
reportWriteable boolean true 执行模式。true:填报模式执行,false:普通报表方式执行。
reportReadOnly boolean false 填报模式执行时,控件(链接按钮除外)都已只读方式呈现,也不允许提交数据。
DN_SubmitType int 0 数据回写时的提交方式:
0-智能模式,
1-新增模式,
2-修改模式。
DN_SubmitVerify boolean false 提交前完整校校验。
DN_AutoRefresh boolean false 提交成功后自动刷新。
externalAlterMode boolean false 采用外部提示模式,当集成到任务系统时,希望由业务系统统一进行信息提示(如“保存成功”、“提交失败”等),通过设置此参数为true,则系统内部在提示相关信息。

4 前端事件

同理智能报表的前端事件在电子表格中也适用,并且还增加了填报表单特有的事件。

事件名
说明
saveReportBefore 表单提交前事件。
saveReportAfter 表单提交后事件。
reportModified 表单变脏后事件。

注意:V6.62版本开始可以在报表模板文件的对应事件中编写JS代码。

5 方法

二次开发程序可以调用相应的方法触发表单的功能。

功能
方法名
说明
保存 ER.save() 本方法是异步调用,无返回值,需要监听saveReportAfter事件
导入Excel ER.importExcel() 本方法是异步调用,无返回值
检测表单是否变脏了(修改后,未保存) ER.isModified() 变脏了:返回true,否则返回false

6 整合示例

监听保存后事件示例:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
    <title>二次示例</title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
    <script type="text/javascript" src="js/jquery.min.js" ></script>
    <script type="text/javascript" src="所属目录路径/ER_toolkit.js" ></script>
</head>
<body style="-webkit-touch-callout:none;width:100%;height:100%;padding:0;overflow:hidden;margin:0;border:0 none;" >
    <iframe id="myRpt" style="width:1024px;height:650px;" ></iframe>
    <script type="text/javascript">
        ER_load_jquery_js(); //注意:标识整合页面已经加载过jQuery了 

        var rptUrl='http://127.0.0.1:8081/lczServer/hrServlet?fileName=hte_151010113821360&targetVolume=app_20160809143122&authId=anonymous_admin';
        var rptframe = $('#myRpt');
        if (rptframe && rptframe.length > 0) {
            rptframe.attr('src', rptUrl);
            rptframe.bind('load', function() {
                if (this.contentWindow.ER) { //注意:整合时,如果存在跨域情况,ER对象将访问不到。
                    var rptER = this.contentWindow.ER;
                    var rptFn = rptER.fn;
                    var rptEvents = rptER.events;
                    if (rptEvents && rptFn) {
                        rptEvents.reportModified(function() {
                            //表单变脏了
                        });

                        rptEvents.saveReportAfter(function() {
                            //绑定表单提交后事件
                            var saveResult = rptFn.getSaveStatus();
                            if ('success' === saveResult) {
                                //保存成功
                                var saveDetail = rptFn.getSaveDetails();  //保存详情信息
                                //单工作表
                                var cellValue = rptER.getCellValueByAlias('单元格名称');
                                //多工作表  
                                var cellValue = rptER.getCellValueByAlias('单元格名称', null, '工作表名称');
                            } else if ('none' === saveResult) {
                                //无修改内容
                            } else {
                                //保存失败了
                                var errInfo = rptFn.getErrorMsg();   //错误信息
                                var errDetail = rptFn.getSaveDetails();  //错误详情
                            }
                        });
                    }
                }
            });
        }
    </script>
</body>
</html>

以二次开发程序主动检查表单是否变脏了示例:

    <script type="text/javascript">
        var rptframe = $('#myRpt');
        if (rptframe && rptframe.length > 0) {
            if (rptframe[0].contentWindow.ER) {
                var rptER = rptframe[0].contentWindow.ER;
                if (rptER) {
                    if(rptER.isModified()) {
                        //表单变脏了
                    }
                }
            }
        }
    </script>

7 个性化定制

请参智能报表中个性化定制相关内容。

8 常见问题

问题1、跨域访问乐创者报表时有什么注意事项?
答:跨域访问时,以下功能将会受限:

 (1) 乐创者报表中的超链接弹窗将无法显示到Window.top中;
 (2) 第三方页面将无法调用iframe中报表对象及方法。

建议通过以下解决方案解决跨域问题:

 (1) 业务系统和乐创者服务部署到一个Web服务器中;
 (2) 通过nginx代理将业务系统和乐创者服务代理成同源。

问题2、移动端如何访问报表?
答:与PC端URL请求地址一致,乐创者服务会自动识别客户端类型;当某些特定的设备无法识别为移动设备时,可追加&mobileClient=true,强制按照移动模式渲染。

作者:柳杨  创建时间:2023-08-02 19:07
最后编辑:柳杨  更新时间:2025-04-22 15:31