Java

POI 이용해 엑셀파일 읽기

조심이 2008. 7. 28. 15:42
반응형


첨부된 POI 라이브러리를 프로젝트의 lib 에 추가한다.

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
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;

public class 포이{

doExcel(c:\test\test.xls);

 public void doExcel(String fileName){
   
  try{
  FileInputStream inputStream = new FileInputStream(fileName);
      
  POIFSFileSystem fileSystem   = new POIFSFileSystem(inputStream);
  HSSFWorkbook workbook        = new HSSFWorkbook(fileSystem);
         
  int sheetNum = workbook.getNumberOfSheets();


  int i=0;
  short c=0;
  
        HSSFSheet sheet = workbook.getSheetAt(0);  //첫번째 쉬트
       
      
        ArrayList list = new ArrayList();
        Hashtable ht = null;
      
 
        int rows = sheet.getPhysicalNumberOfRows(); // 행개수
  
         for(i=0;i<rows;i++){
         ht = new Hashtable();
         
          HSSFRow row = sheet.getRow(i); //row 가져오기
          if(row!=null){
         
             int count=0;
           int cells = row.getPhysicalNumberOfCells(); //셀 개수 가져오기
          
                
             for(c=0;c<cells;c++){
              
              
              HSSFCell cell= row.getCell(c);
              if(cell != null){
               String value = null;
             
             
                switch(cell.getCellType()){   //각셀의 데이터값을 가져올때 맞는 데이터형으로 변환한다.
              
               case HSSFCell.CELL_TYPE_FORMULA:
                value = cell.getCellFormula();
                break;
               case HSSFCell.CELL_TYPE_NUMERIC:
                value =""+cell.getNumericCellValue();
                break;
               case HSSFCell.CELL_TYPE_STRING:
                value =""+cell.getStringCellValue();
                break;
               case HSSFCell.CELL_TYPE_BLANK:
                value =""+cell.getBooleanCellValue();
                break;
               case HSSFCell.CELL_TYPE_ERROR:
                value=""+cell.getErrorCellValue();
                break;
               default:
                
              }
             
                   
                //hashtable 에값을 넣어 둔다.
                          ht.put("CELL"+cell.getCellNum(), value);
             }else{
                          ht.put("CELL"+cell.getCellNum(), "NULL");
             }
          }             
           
       
             
           }
  //넣어둔 hashtable 의 값을 arrayList에 담는다.    
     list.add(ht);
         }
        
      //list 객체 처리....(DB 삽입 등등..)
       
         
         
        }catch (Exception e) {
   e.printStackTrace();
  }
 }
}

반응형