Java的poi技术遍历Excel时进行空Cell,空row,判断

来源:互联网 发布:中异软件好用吗 编辑:程序博客网 时间:2024/05/29 13:56

/** * 导入信息 */@Overridepublic List<Object> add(HttpServletRequest request) {// TODO Auto-generated method stubList<Object> num=new ArrayList<Object>();MultipartHttpServletRequest multipartRequest =(MultipartHttpServletRequest) request;CommonsMultipartFile file = (CommonsMultipartFile)multipartRequest.getFile("zlUpload");if(file!=null){        try {num = save(file.getInputStream());} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}        }returnnum;                } /** * 保存上传的Excel信息 */private List<Object> save(InputStream inputStream) throwsIOException {// TODO Auto-generated method stubList<Object> error_num = new ArrayList<Object>();List<Object> temp =(List<Object>)readXls(inputStream,error_num);System.out.println(temp.get(0).getClass().getName());if(temp.get(0).getClass().getName().equals("org.apache.poi.hssf.usermodel.HSSFCell")){return error_num;}else{TStudentNo student = null;List<TStudentNo> studentList = newArrayList<TStudentNo>();for(int i=0;i<temp.size();i++){student = (TStudentNo)temp.get(i);studentList.add(student);}try {//在插入数据前进行判断,看数据库中是否有不允许重复的字段出现,以打断保存进度int repeat = 0;for(int j = 0;j<studentList.size();j++){TStudentNo Studenttemp =studentMapper.findByStudentNo(studentList.get(j).getStudent_no());//如果查到了,重复数加一,然后跳过不保存if(Studenttemp!=null){repeat++;}}        if(repeat==0){for(int z=0;z<studentList.size();z++){studentMapper.saveStudent(studentList.get(z));}}else{error_num.add("数据库中有相同的数据,请检查学号等不允许重复的部分!");return error_num;}                                } catch (Exception e) {//判断Excel中是否有重复数据,如果有重复跳过保存异常error_num.add("数据库中有相同的数据,请检查学号等不允许重复的部分!");return error_num;} return temp;        }} /** * 逐行遍历其Excel */ private Object readXls(InputStream inputStream,List<Object>error_num) throws IOException {InputStream is = new BufferedInputStream(inputStream);HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);TStudentNo student = null;List<TStudentNo> list = new ArrayList<TStudentNo>();//循环工作表Sheetfor(int numSheet =0;numSheet<hssfWorkbook.getNumberOfSheets();numSheet++){HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);if(hssfSheet == null){continue;} for(int rowNum =2;rowNum<=hssfSheet.getLastRowNum();rowNum++){System.out.println(hssfSheet.getLastRowNum());        HSSFRow hssfRow = hssfSheet.getRow(rowNum);//检查每行的空格数,如果小于4证明有一个或多个空格,但不是整行if(CheckRowNull(hssfRow)<4){student = new TStudentNo();HSSFCell name = hssfRow.getCell(0);HSSFCell student_no = hssfRow.getCell(1);HSSFCell phone = hssfRow.getCell(2);HSSFCell class_no = hssfRow.getCell(3);HSSFCell subject_category = hssfRow.getCell(4);List<HSSFCell> temp = new ArrayList<HSSFCell>();temp.add(0, name);temp.add(1, student_no);temp.add(2, phone);temp.add(3, class_no);temp.add(4, subject_category);int temp1 = 0;//用于跳出双层for循环for(int i=0;i<5;i++){//为记录前台进行提示某行某列出错temp1 = CheckRowError(temp.get(i),error_num,rowNum,i);if(temp1==-1){break;}}if(temp1==-1){return temp;}student.setName(getCellValue(name));student.setPhone(getCellValue(phone));student.setStudent_no(getCellValue(student_no));student.setClass_no(getCellValue(class_no));student.setSubject_category(Integer.parseInt(getCellValue(subject_category)));list.add(student);}else{continue;}} }return list;} /** * 对Excel的各个单元格的格式进行判断并转换 */private String getCellValue(HSSFCell cell) {         String cellValue = "";         DecimalFormat df = newDecimalFormat("#");         switch (cell.getCellType()) {         case HSSFCell.CELL_TYPE_STRING:             cellValue =cell.getRichStringCellValue().getString().trim();             break;         case HSSFCell.CELL_TYPE_NUMERIC:             cellValue =df.format(cell.getNumericCellValue()).toString();             break;         case HSSFCell.CELL_TYPE_BOOLEAN:             cellValue =String.valueOf(cell.getBooleanCellValue()).trim();             break;         case HSSFCell.CELL_TYPE_FORMULA:             cellValue =cell.getCellFormula();             break;         default:             cellValue = "";         }         return cellValue;     }  //判断某行某列有问题private int CheckRowError(HSSFCell cell,List<Object>error_num,int rowNum,int cell_num){//判断各个单元格是否为空if(cell==null||cell.equals("")||cell.getCellType() ==HSSFCell.CELL_TYPE_BLANK){error_num.add("出错啦!请检查第"+(rowNum+1)+"行第"+(cell_num+1)+"列。"+"如果您在该行没有数据,建议您选择删除该行,重试!");return -1;}return 0;} //判断行为空private int CheckRowNull(HSSFRow hssfRow){int num = 0;Iterator<Cell> cellItr =hssfRow.iterator();while(cellItr.hasNext()){ Cell c =cellItr.next();                         if(c.getCellType() ==HSSFCell.CELL_TYPE_BLANK){ num++; }}return num;}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 被毒蜘蛛咬了怎么办 在家被蜘蛛咬了怎么办 被蜘蛛咬了很痒怎么办 被蜘蛛咬了红肿怎么办 宝宝被蜘蛛咬了怎么办 红鹦鹉鱼产卵了怎么办 掉灰的墙面怎么办简单 辣椒上的白粉虱怎么办 巨门在父母宫怎么办 空腹吃柿子胃胀怎么办 吃了山药过敏痒怎么办 瓷砖活动了怎么办的下 家里进了大蛾子怎么办 沙漠玫瑰烂根了怎么办 打麻药的地方疼怎么办 做月子奶不够吃怎么办 坐月子手痛怎么办才好 产后胖了20斤怎么办 手动挡汽车闯动怎么办 孕妇风热感冒了怎么办 孕妇得风热感冒怎么办 小鸡站不起来了怎么办 感冒了流清鼻涕怎么办 哈士奇又吐又拉怎么办 怀孕乳房长妊娠纹怎么办 乳房长妊娠纹了怎么办 宝宝忌奶晚上哭怎么办 20岁胸下垂松软怎么办 断奶时乳房有肿块怎么办 孩子断奶后乳房变小怎么办 断奶了月经不来怎么办 钥匙在门上拔不出来怎么办 钥匙拔不下来了怎么办 养了几天鱼死了怎么办 乌龟的眼睛肿了怎么办 手被鱼刺扎了怎么办 被鱼刺扎手肿了怎么办 手被桂鱼扎了怎么办 三岁宝宝卡鱼刺怎么办 一岁宝宝卡鱼刺怎么办 鱼刺卡在胸口了怎么办