728x90
반응형

보통 엑셀 파일은 jxl 파일로 읽기 쓰기 하는 것이 편하다.

하지만 고객이 xlsx 파일로 하고 싶다고 하면 방법이 없다.

이럴 때는 쓰기엔 xls 파일을 jxl 로 사용하고 읽을때는 xlsx 를 가능하게 해주면

될 것 같다.

그래서 jxl 은  xlsx 를 지원 하지 않으므로

poi 를 써서 엑셀 읽기를 구현해 보았다.

쭉 내려 가면서 보면 이해가 될 것이다.

위 부분을 주석 처리 하고 아래 부분을 주석을 풀면 xlsx(엑셀 2007  버전 포맷)

이 되므로 사용하기 쉬울 것이다.

패키지 파일은 첨부 하였으나 안보인다면

http://poi.apache.org/ 

경로로 가서 받으면 된다.

package excel;
import java.io.File;
import java.io.FileInputStream;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class excelTest2 {

/**
  * 용도:
  * 파라미터:
  * 작성자 :
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  
  //String filePath    =  "c:/품질관리_cdma_0111.xlsx";
  String filePath    =  "c:/1.xls";
  
 
  
  try{
  
   //xls 파일 읽기***************************************************
   
   POIFSFileSystem excel  =  new POIFSFileSystem(new FileInputStream(filePath));
  
   HSSFWorkbook workBook  =  new HSSFWorkbook(new FileInputStream(new File(filePath)));
   
   HSSFSheet sheet    =  null;
   
   HSSFRow row     =  null;
   
   HSSFCell cell    =  null;
   //************************************************************************
   
   
   /*
    *
    //*********************************************** xlsx 파일 읽기
   
   XSSFWorkbook workBook  =  new XSSFWorkbook(new FileInputStream(new File(filePath)));
   
   XSSFSheet sheet    =  null;
   
   XSSFRow row     =  null;
   
   XSSFCell cell    =  null;
   
   //****************************************************************
   */
   
   int sheetNum    =  workBook.getNumberOfSheets();
   
   for(int k=0;k<sheetNum;k++){
    
    sheet     =  workBook.getSheetAt(k);
    
    int rows    =  sheet.getPhysicalNumberOfRows();
    
    for(int r=0;r<rows;r++){
     row     =  sheet.getRow(r);
     int cells   =  row.getPhysicalNumberOfCells();
     
     for(short c=0;c<cells;c++){
      
      cell   =  row.getCell(c);
      
      System.out.println("row:"+r+"==cells:"+c);
      
      if(cell== null){
       continue;
      }
      
      switch(cell.getCellType()){
       
       case 0:
        System.out.println(cell.getNumericCellValue());
      
       break;
       
       case 1:
        System.out.println(cell.getStringCellValue());
       break;
       
       case Cell.CELL_TYPE_FORMULA :
        System.out.println(cell.getCellFormula());
       break;
       
       default:
        System.out.println("");
        
       
      }
      
     }//cell
     
    }//row
    
    
   }
   
   
   
  }catch(Exception e){
   e.printStackTrace();
  }
 }
}

728x90
반응형

'JAVA > EXCEL컨트롤관련' 카테고리의 다른 글

POI Library를 이용한 Excel Read  (0) 2017.12.06
POI 열너비 행높이  (0) 2015.11.12
[공유] POI Quick Guide  (0) 2015.11.12
병합된 셀의 스타일( border)  (0) 2015.11.12
POI Excel 파일 쓰기  (0) 2015.10.22
width  (0) 2015.09.04
셀 합치기  (0) 2015.09.04
Excel - POI  (0) 2015.03.09
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,