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

 

posted @   liglacier  阅读(2569)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
历史上的今天:
2019-09-03 java中转换为string的方法;eques和==区别
点击右上角即可分享
微信分享提示