본문 바로가기

다우 & Web/JAVA

가장 쉽게 JAVA 엑셀 파일 읽고 쓰기 ( #쓰기)

안녕하세요

'개발세끼'의 첫끼 입니다.

오늘은 지난 첫 포스팅으로 소개 드렸었던 ToExcel 라이브러리의 쓰기 방법에 대해서 이어서 작성해 볼까 합니다.

우선 ToExcel의 쓰기 방법은 크게 두가지 방법이 있는데요.

지난 번 읽기 때와 마찬가지로 Mapping Model을 기반으로 자동으로 엑셀로 쓰는 방법을 소개 드릴게요~

toexcel라이브러리의 프로젝트 설정 방법은 이전 포스팅을 참고해 주세요

가장 쉽게 JAVA 엑셀 파일 읽고 쓰기 (#읽기)

 

가장 쉽게 JAVA 엑셀 파일 읽고 쓰기 ( #읽기)

안녕하세요 '개발세끼'의 첫끼 입니다 첫 포스팅인 만큼, 제가 개발한 오픈소스 중 하나인, ToExcel이라는 라이브러리를 소개 해 드리면 어떨까 싶습니다. 이글에서는 첫번째로 엑셀을 읽어 들이는 방법부터 소개..

dev3m.tistory.com

 

 


import com.github.ckpoint.toexcel.annotation.ExcelHeader;
import lombok.ToString;

@ToString
public class UserModel {

    @ExcelHeader(headerName = "이름")
    private String name;
    @ExcelHeader(headerName = "나이")
    private Integer age;
    @ExcelHeader(headerName = "성별")
    private Gender gender;
    @ExcelHeader(headerName = "연락처")
    private String phone;

    public UserModel(String name, Integer age, Gender gender, String phone) {
        this.name = name;
        this.age = age;
        this.gender = gender;
        this.phone = phone;
    }
}

enum Gender {
    남자, 여자;
}

엑셀로 옮길 model은 위 코드처럼, 지난 번 포스팅에서 정의해둔 UserModel class를 재사용 하도록 합니다.

이제 엑셀로 담을 데이터를 가공해야 겠죠?

     List<UserModel> users = Arrays.asList(
                new UserModel("임희섭", 25, Gender.남자, "010-0000-0001")
                , new UserModel("전건우", 24, Gender.남자, "010-0000-0002")
                , new UserModel("이용준", 22, Gender.남자, "010-0000-0003")
                , new UserModel("박상오", 27, Gender.남자, "010-0000-0004")
                , new UserModel("신동준", 24, Gender.남자, "010-0000-0005")
                , new UserModel("황형언", 20, Gender.남자, "010-0000-0006")
                , new UserModel("임다미", 18, Gender.여자, "010-0000-0007")
                , new UserModel("조창환", 28, Gender.남자, "010-0000-0008")
                , new UserModel("박준영", 27, Gender.남자, "010-0000-0009")
                , new UserModel("조슬기", 19, Gender.여자, "010-0000-0010")
        );

10명의 사용자를 가지는 list를 만들어 줍니다.

이후, ToWorkBook과 ToWorkSheet를 생성 해줍니다.

  ToWorkBook toWorkBook = new ToWorkBook(WorkBookType.XSSF);
  ToWorkSheet toWorkSheet = toWorkBook.createSheet();

이때, ToWorkBook 생성자에 파라메터로는, (XSSF, HSSF) 둘중의 하나의 타입으로 지정해 주어야 합니다.

1. HSSF : xls (~2003 엑셀타입)

2. XSSF : xlsx ( 2003~ 엑셀타입)

 

이후 toWorkBook안에는 하나의 시트도 존재 하지 않기 때문에, createSheet 메소드 호출을 통해 시트를 생성 해줍니다.

자! 이제 모든 준비가 끝났습니다.

아래와 같이 sheet의 from으로 list를 시트안에 셀로 옮겨 준 다음,
workbook의 write 메소드를 호출해서 파일로 옮겨 적어 줍니다.

write시 확장자는 필수가 아니에요, workbook을 생성할때 지정한 타입에 해당하는 확장자를 자동으로 넣어 줍니다.

   toWorkSheet.from(users);
   toWorkBook.write("target/users");

 

위 이미지 처럼, 엑셀이 자동으로 잘 생성 된걸 확인했네요!

이상으로, java에서 model을 엑셀로 변환하는 가장 쉬운 방법이였습니다.