[報表篇] (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文檔中下載報表,顯示結果如下
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章