zoukankan      html  css  js  c++  java
  • java导入excel,多sheet

    直接上代码

      

    // 1、创建一个DiskFileItemFactory工厂
      DiskFileItemFactory factory = new DiskFileItemFactory();
    // 2、创建一个文件上传解析器
      ServletFileUpload upload = new ServletFileUpload(factory);
      Map<String, Object> map = new HashMap<String, Object>();
    // 解决上传文件名的中文乱码
      upload.setHeaderEncoding("UTF-8");
      InputStream in = null;
      if (!ServletFileUpload.isMultipartContent(request))
        {
      // 按照传统方式获取数据
        /* return ""; */
      }

    // 4、使用ServletFileUpload解析器解析上传数据,解析结果返回的是一个List<FileItem>集合,每一个FileItem对应一个Form表单的输入项
    List<FileItem> list = upload.parseRequest(request);
      for (FileItem item : list) {
      // 如果fileitem中封装的是普通输入项的数据
      if (item.isFormField()) {
        String name = item.getFieldName();
        // 解决普通输入项的数据的中文乱码问题
        String value = item.getString("UTF-8");
        map.put(name, value);
      } else {// 如果fileitem中封装的是上传文件
        // 得到上传的文件名称,
        String filename = item.getName();
        String filedsname = item.getFieldName();
      if (filename == null || filename.trim().equals("")) {
        continue;
      }
    // 注意:不同的浏览器提交的文件名是不一样的,有些浏览器提交上来的文件名是带有路径的,如:
    // c:a1.txt,而有些只是单纯的文件名,如:1.txt
    // 处理获取到的上传文件的文件名的路径部分,只保留文件名部分
      filename = filename.substring(filename.lastIndexOf("\") + 1);
      // 获取item中的上传文件的输入流
        in = item.getInputStream();
        }
      }
    } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
    } catch (FileUploadException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    } catch (Exception e) {
      e.printStackTrace();
    }

    // 读取Excel文件并存入数据库
    Workbook wb = new XSSFWorkbook(in);
    // 获取Excel文档中的sheet
    for(int sheetIndex=0;sheetIndex<wb.getNumberOfSheets();sheetIndex++)

      //这里是第一个sheet 有跟多的话就判断更多就行了

      if(sheetIndex==0) {

      Sheet sht = wb.getSheetAt(sheetIndex);

      

        for (int i = 2;i<= sht.getLastRowNum(); i++)
        {

        Row r = sht.getRow(i);

        //取出这一行这一列的值

        String stringCellValue = r.getCell(1).getStringCellValue();

            String stringCellValue2 = r.getCell(2).getStringCellValue();

        。。。。。。。

        }

      }

    }

    注意解决碰到的某些问题

    1.空指针问题:    

    Cell cell = r.getCell(j);
      if (cell == null) {
      r.createCell(j);
     }

    2数据类型问题(j为第几列)

      r.getCell(j).setCellType(Cell.CELL_TYPE_STRING);

    over:希望对你有帮助!!有问题可以随时与我沟通我们一起学习。加油骚年!

  • 相关阅读:
    2021总结、2022展望
    新人报到
    第六次实验
    第五次实验
    第一次实验
    第三次实验
    第二次实验
    第四次实验
    实验七
    Tomcat10巨坑,软件不是越新越好。(用到tomcat9及以下就可以)
  • 原文地址:https://www.cnblogs.com/liglacier/p/13609150.html
Copyright © 2011-2022 走看看