안녕하세요 개발로짜입니다.

지난 포스팅은 데이터들을 엑셀파일로 만드는 작업을 진행했었죠?

이번에는 이전 포스팅에 만든 엑셀파일을 반대로 읽어보는 내용을 진행하도록 하겠습니다.


지난 포스팅에서 만든 엑셀파일에 존재하는 데이터 출력입니다.



2014/10/07 - [코드저장소/java] - POI라이브러리를 이용하여 엑셀파일(xls,xlsx) 에 데이터 넣어서 파일로 만들기



엑셀파일내용



위와 같이 엑셀파일내에 존재하는 내용입니다.

이 생성된 파일을 콘솔에 각 셀마다 읽어보도록 하겠습니다.


이번에는 버전별 코드를 작성해보도록 하겠습니다.


XLS 파일읽기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
//파일을 읽기위해 엑셀파일을 가져온다
FileInputStream fis=new FileInputStream("D:\\roqkffhwk.xls");
HSSFWorkbook workbook=new HSSFWorkbook(fis);
int rowindex=0;
int columnindex=0;
//시트 수 (첫번째에만 존재하므로 0을 준다)
//만약 각 시트를 읽기위해서는 FOR문을 한번더 돌려준다
HSSFSheet sheet=workbook.getSheetAt(0);
//행의 수
int rows=sheet.getPhysicalNumberOfRows();
for(rowindex=1;rowindex<rows;rowindex++){
    //행을 읽는다
    HSSFRow row=sheet.getRow(rowindex);
    if(row !=null){
        //셀의 수
        int cells=row.getPhysicalNumberOfCells();
        for(columnindex=0;columnindex<=cells;columnindex++){
            //셀값을 읽는다
            HSSFCell cell=row.getCell(columnindex);
            String value="";
            //셀이 빈값일경우를 위한 널체크
            if(cell==null){
                continue;
            }else{
                //타입별로 내용 읽기
                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;
                }
            }
            System.out.println("각 셀 내용 :"+value);
            }
        }
}


XLSX 파일읽기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
파일을 읽기위해 엑셀파일을 가져온다
FileInputStream fis=new FileInputStream("D:\\roqkffhwk2.xlsx");
XSSFWorkbook workbook=new XSSFWorkbook(fis);
int rowindex=0;
int columnindex=0;
//시트 수 (첫번째에만 존재하므로 0을 준다)
//만약 각 시트를 읽기위해서는 FOR문을 한번더 돌려준다
XSSFSheet sheet=workbook.getSheetAt(0);
//행의 수
int rows=sheet.getPhysicalNumberOfRows();
for(rowindex=1;rowindex<rows;rowindex++){
    //행을읽는다
    XSSFRow row=sheet.getRow(rowindex);
    if(row !=null){
        //셀의 수
        int cells=row.getPhysicalNumberOfCells();
        for(columnindex=0;columnindex<=cells;columnindex++){
            //셀값을 읽는다
            XSSFCell cell=row.getCell(columnindex);
            String value="";
            //셀이 빈값일경우를 위한 널체크
            if(cell==null){
                continue;
            }else{
                //타입별로 내용 읽기
                switch (cell.getCellType()){
                case XSSFCell.CELL_TYPE_FORMULA:
                    value=cell.getCellFormula();
                    break;
                case XSSFCell.CELL_TYPE_NUMERIC:
                    value=cell.getNumericCellValue()+"";
                    break;
                case XSSFCell.CELL_TYPE_STRING:
                    value=cell.getStringCellValue()+"";
                    break;
                case XSSFCell.CELL_TYPE_BLANK:
                    value=cell.getBooleanCellValue()+"";
                    break;
                case XSSFCell.CELL_TYPE_ERROR:
                    value=cell.getErrorCellValue()+"";
                    break;
                }
            }
            System.out.println("각 셀 내용 :"+value);
        }
    }
}


결과 화면



XLS 및 XLSX의 결과는 상단과 모두 동일하게 나올것입니다.

필요한 내용에따라 사용하도록 하세요 ㅎㅎ


by 개발로짜