본문 바로가기

개발

[Java] poi를 이용한 엑셀파일 읽고 쓰기(메이븐)




Poi 라이브러리를 이용하여 엑셀파일을 읽고, 쓰는 예제이다.


메이븐을 사용하지 않는다면 아래 라이브러리를 직접 다운로드한다.

poi-3.13.jar

poi-ooxml-3.13.jar



메이븐을 사용한다면 pom.xml을 열고 아래 내용을 추가한다.

pom.xml

1
2
3
4
5
6
7
8
9
10
11
12
<!-- 엑셀파일 읽기 poi 2007년 이전버전 -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.13</version>
</dependency>
<!-- 엑셀파일 읽기 poi 2007년 이후버전 -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.13</version>
</dependency>
cs



테스트용 엑셀파일을 만들자.

참고로 확장자는 .xlsx 이다. 

확장자가 .xls인 파일은 소스 내용이 좀 다르다. 

여기서는 .xlsx 만 다룬다.


test.xlsx 엑셀파일 생성

test.xlsx





자바 파일 생성 

PoiTestMain


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
48
49
50
51
52
53
54
55
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
 
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 
public class PoiTestMain {
 
    public static void main(String[] args) {
        
        try {
            // 엑셀파일
            File file = new File("D:/test.xlsx");
 
            // 엑셀 파일 오픈
            XSSFWorkbook wb = new XSSFWorkbook(new FileInputStream(file));
            
            Cell cell = null;
            
            // 첫번재 sheet 내용 읽기
            for (Row row : wb.getSheetAt(0)) { 
                // 셋째줄부터..
                if (row.getRowNum() < 2) {
                    continue;
                }
                
                // 두번째 셀이 비어있으면 for문을 멈춘다.
                if(row.getCell(1== null){
                    break;
                }
                
                // 콘솔 출력
                System.out.println("[row] 이름 : " + row.getCell(1+ ", 나이: " + row.getCell(2)
                                + ", 성별: " + row.getCell(3+ ", 비고: " + row.getCell(4));
                
                // 4번째 셀 값을 변경
                cell = row.createCell(4);
                cell.setCellValue("확인");
            }
            
            // 엑셀 파일 저장
            FileOutputStream fileOut = new FileOutputStream(file);
            wb.write(fileOut);
        } catch (FileNotFoundException fe) {
            System.out.println("FileNotFoundException >> " + fe.toString());
        } catch (IOException ie) {
            System.out.println("IOException >> " + ie.toString());
        }
    }
}
 

cs



! 위 내용을 실행 시키면 비고 값이 null 로 출력 된다. 

 하지만 콘솔 출력 후 4번째 셀 값을 변경하고 저장하였기 때문에 test.xlsx 파일을 열어보면 내용이 바뀐걸 확인 할 수 있다. 



결과출력

[row] 이름 : 홍길동, 나이: 40.0, 성별: 남, 비고: null

[row] 이름 : 홍길순, 나이: 20.0, 성별: 여, 비고: null



실행 후 test.xlsx 파일 내용









맨 위로