본문 바로가기
Programming/Java

[Java] 엑셀 파일 읽고 쓰기 (2탄)

by 도낙원 2018. 7. 15.
반응형

  엑셀 파일 읽고 쓰기

이번에 프로젝트를 하면서 쓰게된 엑셀 파일을 읽고 쓰는 방법에 대하 포스팅해보려고 합니다. 이전에는 주로 띄어쓰기나 콤마( , )로 구분된 텍스트 파일을 읽어서 데이터를 처리하거나 반대로 쓰는 것을 했었습니다. 이번에 엑셀 파일로 저장된 데이터를 사용하게 되었고 이전에 방식으로는 지겨우니 엑셀로 바로 처리하는 것을 한번 배워보도록 하겠습니다.

이전에 이미 읽는 방법에 대해선 포스팅을 남겼습니다. 이번 포스팅은 쓰는 방법을 알아보도록 하겠습니다.


  코드 

일단 저는 데이터를 읽고 그 데이터를 사용할 수 있도록 가공하고 새로운 엑셀 파일에 저장까지 할 계획입니다. 원래는 가공하고 바로 DB로 저장시켜도 되지만 이때 아니면 해볼 기회가 없을 것 같아서 전부 한번 해보겠습니다.


writeExcel 메소드

2007버전 이후는 XSSFWorkbook을 사용하시면 되며 밑에 현재 sheet와 같은 것은 앞에 H->X로만 바꿔주면 사용이 가능하실 겁니다. 이번에도 그렇게 어려운 부분은 없을 것입니다. 


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
    public void writeexcel(ArrayList<theaterVo> list) {
 
        String path = "transferTheaterList.xls"// 저장할 파일 경로
        try {
            File file = new File(path);
            FileOutputStream fileout = new FileOutputStream(file); 
 
            HSSFWorkbook hworkbook = new HSSFWorkbook();
            HSSFSheet sheet = hworkbook.createSheet("theaterList"); // sheet 생성
            
            HSSFRow curRow;
            
            int row = list.size(); // list 크기
            for (int i = 0; i < row; i++) {
                curRow = sheet.createRow(i); // row 생성
                curRow.createCell(0).setCellValue(list.get(i).getTheaterno()); // row에 각 cell에 저장
                curRow.createCell(1).setCellValue(list.get(i).getBrandno());
                curRow.createCell(2).setCellValue(list.get(i).getTheatername());
                curRow.createCell(3).setCellValue(list.get(i).getTheateraddress());
                curRow.createCell(4).setCellValue(list.get(i).getTheaterxgps());
                curRow.createCell(5).setCellValue(list.get(i).getTheaterygps());
            }
            hworkbook.write(fileout); // 파일 쓰기
            fileout.close();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
cs


getTheaterxgps() 와 getTeaterygps()는 제가 필요해서 만든 부분이기 때문에 빼도 상관없습니다.

이제 실행을 시켜보도록 하겠습니다.


아래와 같이 파일이 생성되었습니다.

파일의 경로 위치는 읽는 것 쓰는 것 모두 사용자가 프로젝트를 만든 파일 안에 넣어서 사용했습니다.

파일 경로는 알아서 잘 설정하시면 됩니다.


그리고 그 파일을 열어 보면 아래와 같이 정상적으로 필요한 정보만 들어간 것을 알 수 있습니다.

20개만 넣어봤습니다. 그리고 제일 뒤에 좌표는 제가 임의로 넣어놓은 입니다.

노란색 박스는 Sheet 이름이입니다 (writeExcel 메소드 9 줄 코드)



아래는 모든 코드 입니다.

만약 문제가 있거나 더 좋은 코드가 있다면 댓글 달아주시면 참고 하겠습니다.

반응형
사업자 정보 표시
난길샵 | 박현숙 | 경상북도 성주군 월항면 수죽길 98길 | 사업자 등록번호 : 256-07-01668 | TEL : 010-9909-8420 | Mail : skr04@naver.com | 통신판매신고번호 : 제2020-경북성주-52호 | 사이버몰의 이용약관 바로가기

댓글