하은양 믿음군 효실맘 호홍홍집s

xls, xlsx파일 읽기처리를 위한 poi관련 참고 본문

가벼운 배움/jsp

xls, xlsx파일 읽기처리를 위한 poi관련 참고

호홍홍집 2017. 7. 7. 13:37

xls : 오피스 2007미만 버전
xlsx : 오피스 2007 이상 버전

다운로드 URL : http://poi.apache.org/download.html

위에서 최신버전을 다운받았는데... 3.16버전을 하지만 잘 안되서
3.13버전을 받아서 작업하니 되네요^^
xls : poi-3.13-20150929.jar
xlsx : poi-ooxml-3.13-20150929.jar , poi-ooxml-schemas-3.13-20150929.jar , xmlbeans-2.6.0.jar  필요하네요!!

※ 위의 3.16가지고 아래의 샘플을 해봤는데 잘 안되네요...ㅠㅠ

참고 샘플 URL : https://gist.github.com/madan712/3912272

<%@ page import="java.io.*" %>
<%@ page import="org.apache.poi.hssf.usermodel.*" %>
<%@ page import="org.apache.poi.xssf.usermodel.*" %>

<%
 InputStream inputStream = null;

 // 엑셀파일 구분 : xls 파일 
 HSSFWorkbook wb_hssf = null;
 HSSFSheet sheet_hssf = null;
 HSSFRow row_hssf = null;
 HSSFCell cell_hssf = null;

    // 엑셀파일 구분 : xlsx 파일
 XSSFWorkbook  wb_xssf = null;  
 XSSFSheet sheet_xssf = null;
 XSSFRow row_xssf = null;
 XSSFCell cell_xssf = null;

 try{  
  // 업로드된 파일 불러오기
  inputStream = new FileInputStream(new File(sSavePath+sFilename));

  Iterator rowIterator = null;
   
  if("xlsx".equals(sExtName)) {    
   wb_xssf = new XSSFWorkbook(inputStream);  
   sheet_xssf = wb_xssf.getSheetAt(0);

   rowIterator = sheet_xssf.rowIterator();
  }else{
   wb_hssf = new HSSFWorkbook(inputStream);  
   sheet_hssf = wb_hssf.getSheetAt(0);
   
   rowIterator = sheet_hssf.rowIterator();
  }   
  
  if(rowIterator != null){

   int iRowCnt = 0;
   int i = 1;
    
   while (rowIterator.hasNext()) {
    if("xlsx".equals(sExtName)) {
     row_xssf = (XSSFRow)rowIterator.next();
    }else{
     row_hssf = (HSSFRow)rowIterator.next();        
    }     
    
    if(iRowCnt == 0){  // 첫번째 줄 생략
     iRowCnt++;
     continue;
    }

    Iterator cellIterator = null;
    if("xlsx".equals(sExtName)) {
     cellIterator = row_xssf.cellIterator();
    }else{
     cellIterator = row_hssf.cellIterator();      
    }

    String sCOL0 = "";
    String sCOL1 = "";
    String sCOL2 = "";
    String sCOL3 = "";
    String sCOL4 = "";

    StringBuilder sb = new StringBuilder();

    String[] ss = new String[5];
    int n=0;
    
    while (cellIterator.hasNext()) {
     if(n > 4) break;

     String cellStringValue = null;
     if("xlsx".equals(sExtName)) {
      cell_xssf = (XSSFCell)cellIterator.next();

      if (cell_xssf.getCellType() == 0) {
       double doubleValue = cell_xssf.getNumericCellValue();
       int intValue = Integer.parseInt(String.valueOf(Math.round(doubleValue)));
       cellStringValue = intValue+""; 
      }else if (cell_xssf.getCellType() == 1) {
       cellStringValue = cell_xssf.getStringCellValue();
      }else if (cell_xssf.getCellType() == 2) {
       java.util.Date dateValue = cell_xssf.getDateCellValue();
       if(dateValue != null){
        SimpleDateFormat transFormat = new SimpleDateFormat("yyyy-MM-dd");
        cellStringValue = transFormat.format(dateValue); 
       }else{
        cellStringValue = "";
       } 
      }else if (cell_xssf.getCellType() == 3) {
       cellStringValue = "";
      }else if (cell_xssf.getCellType() == 4) {
       boolean booleanValue = cell_xssf.getBooleanCellValue();
       cellStringValue = Boolean.toString(booleanValue);
      }else if (cell_xssf.getCellType() == 5) {
       Byte byteValue = cell_xssf.getErrorCellValue(); 
       if(byteValue != null){
        cellStringValue = byteValue.toString();
       }else{
        cellStringValue = "";
       }
      }
     }else{
      cell_hssf = (HSSFCell)cellIterator.next();
      
      if (cell_hssf.getCellType() == 0) {
       double doubleValue = cell_hssf.getNumericCellValue();
       int intValue = Integer.parseInt(String.valueOf(Math.round(doubleValue)));
       cellStringValue = intValue+""; 
      }else if (cell_hssf.getCellType() == 1) {
       cellStringValue = cell_hssf.getStringCellValue();
      }else if (cell_hssf.getCellType() == 2) {
       java.util.Date dateValue = cell_hssf.getDateCellValue();
       if(dateValue != null){
        SimpleDateFormat transFormat = new SimpleDateFormat("yyyy-MM-dd");
        cellStringValue = transFormat.format(dateValue); 
       }else{
        cellStringValue = "";
       } 
      }else if (cell_hssf.getCellType() == 3) {
       cellStringValue = "";
      }else if (cell_hssf.getCellType() == 4) {
       boolean booleanValue = cell_hssf.getBooleanCellValue();
       cellStringValue = Boolean.toString(booleanValue);
      }else if (cell_hssf.getCellType() == 5) {
       Byte byteValue = cell_hssf.getErrorCellValue(); 
       if(byteValue != null){
        cellStringValue = byteValue.toString();
       }else{
        cellStringValue = "";
       }
      }
     }     

     ss[n] = cellStringValue;
     n++;
    }

    sCOL0 = ss[0]; if(sCOL0 == null) sCOL0 = "";
    sCOL1 = ss[1]; if(sCOL1 == null) sCOL1 = "";
    sCOL2 = ss[2]; if(sCOL2 == null) sCOL2 = "";
    sCOL3 = ss[3]; if(sCOL3 == null) sCOL3 = "";
    sCOL4 = ss[4]; if(sCOL4 == null) sCOL4 = "";

   }        
  
  }else{
   // rowIterator 가 null


  }
 }catch(IOException ierr){
  System.out.println(ierr.toString());  
 }catch(Exception ee){
  System.out.println(ee.toString());    
 }finally{
  if(inputStream != null){
   inputStream.close();
  }
 } 

 // 등록파일 삭제처리...
 if(!sFilename.equals("")){
  File f = new File(sSavePath+sFilename);
  if(f.exists()){
    f.delete();
   }
  }

 }else {     // 파일명이 없으면 Back!!
  out.println("<script type='text/javascript'>");
  out.println("alert('파일 저장 오류 발생');");
  out.println("</script>"); 
  return;
 } 
%>