[报表篇]固定合计栏
步骤一:制作表和画面
步骤二:模板的新建与导入
步骤三:编辑代码
步骤四:印刷结果画面的显示
一:制作表和画面
(一)制作表
1.如下所示在数据库中新建一张表
SQL文:
CREATE TABLEm_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 INTOm_student1
VALUES (‘k0001’, ‘王’, ‘明明’, ‘王明明’, ‘男’, ‘60’, ‘1’, ‘2018-12-13 19:43:24’, ‘yong_yong01test1’, ‘2018-12-13 19:46:59’, ‘yong_yong01test1’);
INSERT INTOm_student1
VALUES (‘k0001’, ‘王’, ‘明明’, ‘王明明’, ‘男’, ‘100’, ‘2’, ‘2018-12-13 19:47:44’, ‘yong_yong01test1’, ‘2018-12-13 19:47:44’, ‘yong_yong01test1’);
INSERT INTOm_student1
VALUES (‘k0002’, ‘李’, ‘华’, ‘李华’, ‘女’, ‘45’, ‘0’, ‘2018-12-13 19:49:32’, ‘yong_yong01test1’, ‘2018-12-13 19:49:32’, ‘yong_yong01test1’);
INSERT INTOm_student1
VALUES (‘k0002’, ‘李’, ‘华’, ‘李华’, ‘女’, ‘99’, ‘1’, ‘2018-12-13 19:50:15’, ‘yong_yong01test1’, ‘2018-12-13 19:50:15’, ‘yong_yong01test1’);
INSERT INTOm_student1
VALUES (‘k0002’, ‘李’, ‘华’, ‘李华’, ‘女’, ‘78’, ‘2’, ‘2018-12-13 19:50:46’, ‘yong_yong01test1’, ‘2018-12-13 19:50:46’, ‘yong_yong01test1’);
二:模板的新建与导入
- 下载报表模板并编辑内容
- 模板导入
报表模板定义-指定新模板
选择需要的模板导入并记住文件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文档中下载报表,显示结果如下