본문 바로가기
JAVA

[ JAVA ] 자바 POI 로 xls,xlsx 파일 읽기

by 정윤재 2011. 2. 15.

보통 엑셀 파일은 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();
  }
 }
}



댓글