[报表篇] (5)相同项目求和

方法:addRelativeCopyItem()

相同项目求和和合计栏的区别在于按科目排序
strSqlc.append(" ORDER BY STUDENT_SUBJECT ");

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

步骤二:编辑代码

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

一:模板的新建与导入

  1. 点击链接下载报表模板 相同项目求和
  2. 模板导入
    报表模板定义-指定新模板
    选择需要的模板导入并记住文件ID在代码中进行更改
    在这里插入图片描述

二:编辑代码

var cy;
//创建StringBuilder对象
var strSqlc = new StringBuilder();
 //学生ID
var NIANDU1 = getObj('txt4'); 

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 ");
   strSqlc.append("where 1 = 1");
    //判断ID
    if (NIANDU1 != null && NIANDU1 != "") {
     //追加SQL语句
        strSqlc.append(" AND  XUESHENGID = '").append(NIANDU1).append("'");
    }
   //按科目排序
    strSqlc.append(" ORDER BY STUDENT_SUBJECT ");

    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(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);

        //追加sheet
        excelDataBean.addSheet("成绩表", sheeBean);

     //设置小计栏
        var listcount = listBean.setCount("A6", "A6", "D5");

        //设置合计栏
        sheeBean.addRelativeCopyItem("A7","A7",0,0,true,true);

        excelPrint.setExcelDataBean(excelDataBean);
     //输入模板文件ID
        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文档中下载报表,显示结果如下
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值