[Java] Apache POI : 엑셀파일 읽기

Study/Java 2018. 12. 2. 22:13 Posted by meanoflife
반응형

아파치 POI Library를 이용하여, 엑셀파일 읽기를 해 보겠습니다.


프로젝트에서는 많은 문서작업을 하게 됩니다.

제안서부터 각종 발표PPT, 중간보고 자료 및 산출물 등...


이런 문서들중 발표자료를 제외하면 주류가 엑셀파일 형태입니다.


이러한 엑셀파일을 Java로 핸들링하기 위해서는 별도의 Library가 필요합니다.

그 중 Apache제단에서 시행하고 있는 POI프로젝트 Library를 이용한 엑셀파일 핸들링 방법입니다.



■ 샘플 파일





■ Coding



    public static void main(String[] args) {

        

        try {

             

            FileInputStream fis=new FileInputStream("E:/sample.xlsx");

            

            XSSFWorkbook wb = new XSSFWorkbook( fis );  // 파일

            XSSFSheet sh = wb.getSheetAt(0);          // SHEET

            

            //행의 수

            int rows = sh.getPhysicalNumberOfRows();

            

            for( int i=0; i < rows; i++ ) {

                

                ArrayList<String> arrLine = new ArrayList<String>();

                

                //행을 읽는다

                XSSFRow row = sh.getRow( i );

                

                if( row == null ) continue;

                

                //셀의 수

                int cells=row.getPhysicalNumberOfCells();

                

                for( int k = 0; k <= cells; k++ ) {

                    

                    //셀값을 읽는다

                    XSSFCell cell= sh.getRow( i ).getCell( k );


                    if(cell == null ) continue;


                    //타입별로 내용 읽기

                    String value="";


                    switch (cell.getCellType() ) {

                        case FORMULA :

                            value=cell.getCellFormula();

                            break;

                        case NUMERIC :

                            value=cell.getNumericCellValue()+"";

                            break;

                        case STRING :

                            value=cell.getStringCellValue()+"";

                            break;

                        case BLANK:

                            value=cell.getBooleanCellValue()+"";

                            break;

                        case ERROR:

                            value=cell.getErrorCellValue()+"";

                            break;

                        default:

                            break;

                    }


                    arrLine.add( value );

                }

                

                System.out.println( arrLine );

            }

        } catch (Exception e) {

            e.printStackTrace();

            System.exit(0);

        }

    } 




■ 결과



1. (Excel)파일을 지정하고, FileInputStream fis=new FileInputStream("E:/sample.xlsx");


2. Excel파일 객체로 읽어 들입니다. XSSFWorkbook wb = new XSSFWorkbook( fis );


3. 읽은 엑셀파일의 SHEET, ROW, CELL을 읽어 핸들링합니다.


- SHEET : XSSFSheet sh = wb.getSheetAt(0); 

- ROW  : XSSFRow row = sh.getRow( i );

- CELL   : XSSFCell cell= sh.getRow( i ).getCell( k );



끝.


반응형