[报表篇]固定合计栏

步骤一:制作表和画面

步骤二:模板的新建与导入

步骤三:编辑代码

步骤四:印刷结果画面的显示

一:制作表和画面

(一)制作表

1.如下所示在数据库中新建一张表

SQL文:
CREATE TABLE m_student1 (
XUESHENGID varchar(10) NOT NULL,
LASTNAME varchar(15) DEFAULT NULL,
FIRSTNAME varchar(15) DEFAULT NULL,
STUDENT_FULL_NM_KN varchar(40) DEFAULT NULL,
XINGBIE varchar(20) DEFAULT NULL,
CHENGJI int(11) DEFAULT NULL,
STUDENT_SUBJECT varchar(5) DEFAULT NULL,
FIRST_REG_DTM datetime DEFAULT NULL,
FIRST_REG_ID varchar(50) DEFAULT NULL,
LAST_UPDATE_DTM datetime DEFAULT NULL,
LAST_UPDATE_ID varchar(50) DEFAULT NULL,
PRIMARY KEY (XUESHENGID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

定义导入-定义内容(添加SQL文)-创建
在这里插入图片描述
修改项目名称,点击保存(记得勾选反映到数据库)
在这里插入图片描述

(一)创建两个画面

1.画面:印刷函数
制作画面-画面版面设计-新建
在这里插入图片描述
创建界面名,填写TextBox,打印按钮的项目数,点击保存。添加菜单,选择一个文件夹保存
在这里插入图片描述

画面跳转到界面设计页面,如下图所示修改项目名并设计页面
在这里插入图片描述
※界面设计结束后记得按设计栏中的保存按钮保存页面。
2.画面:印刷函数画面
制作画面-画面科目定义-新建
在这里插入图片描述
创建界面名,填写管理ID(可填1),选择关联表,勾选需要编辑的项目。同印刷函数,将画面添加到菜单并选择文件夹
在这里插入图片描述
点击界面项目定义的[画面版面设计转移]按钮,跳转到界面设计页面
在这里插入图片描述
重新定义科目属性,右击科目右侧的文本框,选择项目定义
在这里插入图片描述
按下图所示更改科目属性,点击保存
在这里插入图片描述
※界面设计结束后记得按设计栏中的保存按钮保存页面。

登录用户界面添加数据
在这里插入图片描述

INSERT INTO m_student1 VALUES (‘k0001’, ‘王’, ‘明明’, ‘王明明’, ‘男’, ‘88’, ‘0’, ‘2018-12-13 19:42:58’, ‘’, ‘2018-12-13 19:42:58’, ‘’);
INSERT INTO m_student1 VALUES (‘k0001’, ‘王’, ‘明明’, ‘王明明’, ‘男’, ‘60’, ‘1’, ‘2018-12-13 19:43:24’, ‘yong_yong01test1’, ‘2018-12-13 19:46:59’, ‘yong_yong01test1’);
INSERT INTO m_student1 VALUES (‘k0001’, ‘王’, ‘明明’, ‘王明明’, ‘男’, ‘100’, ‘2’, ‘2018-12-13 19:47:44’, ‘yong_yong01test1’, ‘2018-12-13 19:47:44’, ‘yong_yong01test1’);
INSERT INTO m_student1 VALUES (‘k0002’, ‘李’, ‘华’, ‘李华’, ‘女’, ‘45’, ‘0’, ‘2018-12-13 19:49:32’, ‘yong_yong01test1’, ‘2018-12-13 19:49:32’, ‘yong_yong01test1’);
INSERT INTO m_student1 VALUES (‘k0002’, ‘李’, ‘华’, ‘李华’, ‘女’, ‘99’, ‘1’, ‘2018-12-13 19:50:15’, ‘yong_yong01test1’, ‘2018-12-13 19:50:15’, ‘yong_yong01test1’);
INSERT INTO m_student1 VALUES (‘k0002’, ‘李’, ‘华’, ‘李华’, ‘女’, ‘78’, ‘2’, ‘2018-12-13 19:50:46’, ‘yong_yong01test1’, ‘2018-12-13 19:50:46’, ‘yong_yong01test1’);

二:模板的新建与导入

  1. 下载报表模板并编辑内容
  2. 模板导入
    报表模板定义-指定新模板
    选择需要的模板导入并记住文件ID在代码中进行更改
    在这里插入图片描述

三:编辑代码

var cy;				
//创建StringBuilder对象				
var strSqlc = new StringBuilder();				
				
var NIANDU1 = getObj('txt4'); 
//学生ID				
				
var excelDataBean = null;				
				
var sheeBean = null;				
				
var excelPrint = getExcelPrint();				
				
var rowDataList = null;				
				
var row = null;				
//科目定义				
var STUDENT_SUBJECT0 = 0;				
var STUDENT_SUBJECT1 = 0;				
var STUDENT_SUBJECT2 = 0;				
try {				
    //追加SQL语句				
   strSqlc.append("SELECT XUESHENGID,STUDENT_FULL_NM_KN,XINGBIE,STUDENT_SUBJECT,CHENGJI FROM M_STUDENT1 ");				
    //判断ID				
    if (NIANDU1 != null && NIANDU1 != "") {				
				
        strSqlc.append(" AND XUESHENGID = '").append(NIANDU1).append("'");				
    }				
   //按ID排序				
    strSqlc.append(" ORDER BY XUESHENGID ");				
				
    cy = exequeryarrylist(strSqlc.toString());				
				
    excelDataBean = new ExcelDataBean();				
    //数据不为空				
    if (cy != null && cy.size() > 0) {				
        // list初始化				
        rowDataList = new ArrayList();				
				
        sheeBean = new ExcelDataBean();				
				
        var conditionMap = new HashMap ();				
     //循环数据并取值				
        for (var i = 0; i < cy.size(); i++) {				
            				
            row1 = new ArrayList();				
				
            row = cy.get(i);				
            				
         // 学生ID				
            row1.add(row.get(0));				
            				
            // 姓名				
            if(nullOrBlank(row.get(1))){				
                row1.add("");				
            } else {				
          // 姓名            				
                row1.add(row.get(1));				
            }				
            				
            // 性別				
            if(nullOrBlank(row.get(2))){				
                row1.add("");				
            } else {				
              // 性別				
                row1.add(row.get(2));				
            }				
            // 科目				
            if(nullOrBlank(row.get(3))){				
                row1.add("");				
				
            } else {				
                // 给科目赋值				
                if (row.get(3) == 0) {				
                    row1.add("数学");				
				
                } else if (row.get(3) == 1) {				
                    row1.add("英语");				
				
                } else {				
                    row1.add("语文");				
                }				
				
                if(row.get(3) == 0 && !nullOrBlank(row.get(4))){				
                    STUDENT_SUBJECT0 = STUDENT_SUBJECT0 + parseInt(row.get(4),10);				
                } else if(row.get(3) == 1 && !nullOrBlank(row.get(4))) {				
                     STUDENT_SUBJECT1 = STUDENT_SUBJECT1 + parseInt(row.get(4),10);				
                }	else {			
                    STUDENT_SUBJECT2 = STUDENT_SUBJECT2 + parseInt(row.get(4),10);;				
                }				
            } 				
           				
            // 成绩				
            if(nullOrBlank(row.get(4))){				
                row1.add("");				
            } else {				
                // 成绩				
                row1.add(row.get(4));				
            }				
            				
            rowDataList.add(row1);				
        }				
        				
        //拷贝模板的标题部分				
        sheeBean.addCopyItem("A1", "A5");				
				
        //设定指定单元格的值				
        sheeBean.addItem("A2", "成绩表");				
				
        //单元格类型的设定				
        conditionMap.put(0, new ExcelCellBean(0, 0, "string"));				
        //单元格类型的设定				
        conditionMap.put(1, new ExcelCellBean(0, 1, "string"));				
        //单元格类型的设定				
        conditionMap.put(2, new ExcelCellBean(0, 2, "string"));				
        //单元格类型的设定				
        conditionMap.put(3, new ExcelCellBean(0, 3, "string"));				
        //单元格类型的设定				
        conditionMap.put(4, new ExcelCellBean(0, 4, "number"));				
        				
        //在excel数据列表中追加数据				
        var listBean = sheeBean.addList("A5", rowDataList, conditionMap);				
        				
        //设置合计栏				
        sheeBean.addRelativeCopyItem("A6","A6",0,0,true,true);				
        //设置字段并计算总和				
        sheeBean.addRelativeItem(0,0,"数学总成绩:" + STUDENT_SUBJECT0,0);				
        sheeBean.addRelativeItem(0,2,"英语总成绩:" + STUDENT_SUBJECT1,0);				
        sheeBean.addRelativeItem(0,4,"语文总成绩:" + STUDENT_SUBJECT2,0);				
				
        //追加sheet				
    excelDataBean.addSheet("成绩表", sheeBean);				
        				
        excelPrint.setExcelDataBean(excelDataBean);				
        excelPrint.setTemplateID(132);				
        JsonObj = excelPrint.print("132");				
    } else {				
        //设置错误信息				
        excelDataBean.setErrorMsg("数据不存在。");				
        excelPrint.setTemplateID(132);				
        excelPrint.setExcelDataBean(excelDataBean);				
        JsonObj = excelPrint.print("132");				
}				
} catch (e) {				
trace(e);				
    ActStr += "alert('" + e + "');";				
}							

工具-自定义函数-新建
在这里插入图片描述
创建函数名称,选择使用范围、使用函数的界面和运行端
在这里插入图片描述
单击编辑函数
※第三行代码getObj()的参数如下图右侧红框所示 txt4,根据个人设置情况会有所不同
在这里插入图片描述
※setTemplateID()和print(" ")的参数为导入模板时记下的文件ID
制作画面-画面版面设计-编辑
在这里插入图片描述
进入到界面设计页面,右击印刷函数按钮,选择函数定义
在这里插入图片描述
选择已经定义好的函数类型及函数名称,点击编辑 在这里插入图片描述
点击SQL语句验证,可以检验SQL语句的执行结果
在这里插入图片描述

在这里插入图片描述

四:印刷结果画面的显示

按下印刷函数按钮,可在Excel文档中下载报表,显示结果如下
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44075302/article/details/85059455