-
Java的poi技术遍历Excel时进行空Cell,空row,判断
- @Override
- public List<Object> add(HttpServletRequest request) {
- List<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) {
- e.printStackTrace();
- }
- }
- returnnum;
- }
-
- private List<Object> save(InputStream inputStream) throwsIOException {
- List<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) {
- error_num.add("数据库中有相同的数据,请检查学号等不允许重复的部分!");
- return error_num;
- }
-
- return temp;
- }
- }
-
-
- 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>();
- for(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);
- 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(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;
- }
-
- 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;
- }
-
相关阅读:
awk 使用shell 变量
设计模式之 外观(门面)模式 Facade
设计模式之 抽象工厂模式
python 第一课
Visual Basic 图片连接地址添加
smarty 不同模板 缓存时间
PHP 传参过滤
Nginx 0.7.x + PHP 5.2.10(FastCGI)搭建支持高并发量的Web服务器
linux vi 编辑命令
PHP 命令模式 执行文件 并传递参数
-
原文地址:https://www.cnblogs.com/telwanggs/p/6650354.html
Copyright © 2020-2023
润新知