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