/**
* Excel到入老师信息
*/
@SuppressWarnings("unchecked")
public String readExcel(){
try {
InputStream in = new FileInputStream(excelFile);
List<TeacherView> lists=null;
Map<String,String> teaMap=new HashMap<String, String>();
teaMap.put("schId", schID);
//读取学校的老师信息
final List<TeacherView> teaList=teacherService.queryTeacherAllSchool(teaMap);
final List<Subjects> subList = subjectService.selectSubjectList(Integer.parseInt(schID));//根据学校读取科目
final Map<String,String> telMap=new HashMap<String, String>();
final Map<String,String> nameMap=new HashMap<String, String>();
final Map<String,String> classAndSub=new HashMap<String, String>();
Map<String, Object> resultMap=LoadXLS.load(in,3,new LoadXLSCallBack<TeacherView>(){
@Override
public TeacherView getObject(List<String> list) {
int gbnum=0;
TeacherView tv=new TeacherView();
String teacherName=list.get(1).trim();//老师姓名
String mobile=list.get(2).trim();//电话
String roleName=list.get(3).trim();//角色名称
String sex=list.get(4).trim();//性别
String address=list.get(5);
if(address!=null && address!=""){
address=address.trim();
}
String classInfo=list.get(6);//班级
if(classInfo!=null && classInfo!=""){
classInfo=classInfo.trim();
}
String subInfo=list.get(7);//科目
if(subInfo!=null && subInfo!=""){
subInfo=subInfo.trim();
}
String errorMsg="";
if(teacherName.length()<1){
errorMsg+="老师名称不能为空,";
}else{
if(telMap.get(teacherName)==null){
telMap.put(teacherName, teacherName);
Map<String,Object> map=new HashMap<String, Object>();
map.put("teacherName", teacherName);
int teacherrow=teacherService.teacherNameIsExist(map);
if(teacherrow==-1){
errorMsg+="老师姓名已存在,";
}else{
tv.setTeacherName(teacherName);
}
}else{
errorMsg+="导入数据中老师姓名已存在,";
}
}
if(mobile.length()<1){
errorMsg+="电话不能为空,";
}else{
//获取电话号码 判断电话号码是否合法
// Pattern p = Pattern.compile("^((13[0-9])|(15[^4,\\D])|(18[-9]))\\d{8}$");
// Matcher m = p.matcher(mobile);
if(!AllUtils.isMobileNO(mobile)){
errorMsg+="电话号码格式错误,";
}
//if(telMap.get(mobile)==null && nameMap.get(teacherName)==null){
if(telMap.containsKey(mobile) && nameMap.containsKey(teacherName)){
errorMsg+="老师姓名和电话存在重复,";
}else{
telMap.put(mobile, mobile);
telMap.put(teacherName, teacherName);
if(teaList!=null && teaList.size()>0){
for (TeacherView t:teaList) {
if(t!=null){
if(mobile.equals(t.getMobile()) && teacherName.equals(t.getTeacherName())){
errorMsg+="老师已存在,";
break;
}
}
}
}
}
}
if(roleName.length()<1){
errorMsg+="角色名称不能为空,";
}else{
int roleID = teacherService.getRoleIdByName(roleName);
if (roleID == 0) {
errorMsg+="角色名称错误,";
}else{
tv.setRoleId(roleID+"");
tv.setRoleName(roleName);//角色名称
//如果是年级组长则判断年级是否存在
/*System.out.println(roleName);
if("年级组长".equals(roleName)){
if(!classInfo.isEmpty()){
for (GradeBaseInfo gb:gradeList) {
if(gb!=null){
if(gb.getGradeName()==classInfo){
tv.setGradeId(gb.getId()+"");
break;
}
}
}
if(tv.getGradeId()==null || tv.getGradeId()==""){
errorMsg+="年级不存在,";
}
}
}*/
}
}
if(sex.length()<1){
errorMsg+="性别不能为空,";
}else{
//获取性别 判断性别是否合法
if(!("男".equals(sex) || "女".equals(sex))){
errorMsg+="性别错误,";
}
}
/**
* 判断科目
*/
boolean bool=false;
String subID="";
if(subInfo!=null && subInfo.length()>0){
for (Subjects subjects : subList) {
if(subjects!=null){
if(subjects.getSubjectname().equals(subInfo)){
bool=true;
tv.setSub(subjects.getSubjectID().toString());
subID=subjects.getSubjectID().toString();
break;
}else{
bool=false;
}
}
}
}
//判断科目是否存在
if(bool==false && subID!=""){
errorMsg+="科目不存在,";
}
if(!classInfo.isEmpty() && subID.isEmpty()){
errorMsg+="科目不能为空,";
}
if(classInfo.isEmpty() && !subID.isEmpty()){
errorMsg+="班级不能为空,";
}
//判断班级是否存在
String classIds="";
if(!classInfo.isEmpty()){
//String className=teacherView
int index = classInfo.replace(",", ",").indexOf(",");
// 如果在导入的Excel中一个老师管辖多个班级,“三(1),三(2)”这样的情况,对班级进行分割判断,然后添加
if (index > 0) {
String[] str =classInfo.replace(",", ",").split(",");
for (int j = 0; j < str.length; j++) {
Map<String,Object> classMap=new HashMap<String, Object>();
String className=str[j];
className=className.replace("(", "(");
className=className.replace(")", ")");
classMap.put("className", className);
classMap.put("schId", schID);
// 根据班级名称和学校ID,去查找班级信息
try {
ClassBaseInfo cbs = classBaseService.selectClassBaseByName(classMap);
if(cbs==null){
errorMsg+="班级名称错误,";
}else{
if(cbs.getId()!=null){
classIds+=cbs.getId()+",";
if(subID!="" && subID!=null){
if(classAndSub.containsKey((subID+cbs.getId()))){
errorMsg+="班级科目绑定重复,";
}
classAndSub.put((subID+cbs.getId()), (subID+cbs.getId()));
}
}
}
} catch (Exception e) {
}
}
}
// 当一个老师只管理一个班级的时候
if (index == -1) {
try {
Map<String,Object> classMap=new HashMap<String, Object>();
classInfo=classInfo.replace("(", "(");
classInfo=classInfo.replace(")", ")");
classMap.put("className",classInfo);
classMap.put("schId",schID);
//查找班级的名称是否存在
ClassBaseInfo cbs = classBaseService.selectClassBaseByName(classMap);
if (cbs== null) {
errorMsg+="班级名称错误,";
}else{
if(cbs.getId()!=null){
classIds+=cbs.getId()+",";
if(subID!="" && subID!=null){
if(classAndSub.containsKey((subID+cbs.getId()))){
errorMsg+="班级科目绑定重复,";
}
classAndSub.put((subID+cbs.getId()), (subID+cbs.getId()));
}
}
}
} catch (Exception e) {
}
}
}
//去除最后,读取班级集合
if(classIds!="" && classIds!=null){
classIds=classIds.substring(0,classIds.length()-1);
}
//数据库老师名存在性判断
//去除最后,
if(errorMsg!="" && errorMsg!=null){
errorMsg=errorMsg.substring(0,errorMsg.length()-1);
}
tv.setMobile(mobile);
tv.setRoleName(roleName);
tv.setSex(sex);
tv.setAddress(address);
tv.setOwnerClass(classInfo);
tv.setSchId(Integer.parseInt(schID));
tv.setErrMsg(errorMsg);
tv.setClassIds(classIds);
return tv;
}
@Override
public int getColumnSize() {
return 8;
}
@Override
public String[] getHeadColumn() {
// TODO Auto-generated method stub
return new String[]{"序号","姓名","手机号码","角色","性别","住址","管辖
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
poi即Excel导入导出,在开发过程中了,为了提高数据录入速度, 一些系统都会使用导入功能,导入目前只能通过流的方式读写,那么为了此操作的便利性,提供此工具类,是原有的excel数据读取到泛型集合中,然后再对集合进行处理,在读取到泛型集合的时候,可以对数据的存在性进行判断,如果该条数据存在错误,可以跟一个errorMsg赋值,那么会在Excel中原有的数据行的最后一列,提示错误原因!以上仅供学习和参考,使用如果出错,请注意导包!
资源推荐
资源详情
资源评论
收起资源包目录
poi.7z (7个子文件)
POI
DeriveXLSCallBack.java 668B
ExcelUtil.java 2KB
LoadXLSCallBack.java 688B
LoadXLS.java 9KB
DeriveXLS.java 5KB
UploadTemplate.java 7KB
方法调用案例.txt 9KB
共 7 条
- 1
资源评论
- hj4922902552015-05-12实在是不好用雕_零2018-11-20是你没看懂吧
雕_零
- 粉丝: 0
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功