方法:addRelativeCopyItem()
相同項目求和和合計欄的區別在於按科目排序
strSqlc.append(" ORDER BY STUDENT_SUBJECT ");
步驟一:模板的新建與導入
步驟二:編輯代碼
步驟三:印刷結果畫面的顯示
一:模板的新建與導入
- 點擊鏈接下載報表模板 相同項目求和
- 模板導入
報表模板定義-指定新模板
選擇需要的模板導入並記住文件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文檔中下載報表,顯示結果如下