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:\a\b\1.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:希望对你有帮助!!有问题可以随时与我沟通我们一起学习。加油骚年!

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM