TL;DR
하나의 CellStyle에 여러 개의 스타일을 동시에 넣을 수 없기 때문에 따로따로 만들어주는 방법으로 해결했다.
문제 발생
POI를 사용해서 하나의 CellStyle에서 여러 스타일을 사용할 때 마지막 셀의 스타일이 전체에 적용되는 오류가 발생했다.
해결 방법
구글링으로 열심히 뒤져보니 하나의 CellStyle에 여러 개의 스타일을 넣을 수 없었다.
그래서 기존 소스 코드를 보면
Cell cells = rows.createCell(29); // 쿠폰
cells.setCellStyle(style);
이런 식으로 하나의 CellStyle을 계속 재사용하면서 사용했기 때문에 위와 같은 이슈가 발생했던 것이었다. 그렇다고 하나의 row마다 createCellStyle()
을 이용해서 만들기에는 CellStyle은 한 번에 만들 수 있는 개수가 제한되어있었다.
그래서 아예 처음부터 사용하는 스타일을 미리 만들어두고 꺼내쓰는 방법으로 해결을 했다. 엑셀 데이터를 넣는 로직이 다른 메소드에 있어서 한 번에 넘기기 편하게 하기 위해 Map으로 만들었다.
HashMap<String, CellStyle> style = new HashMap<>();
style.put("red", ExcelUtils.createWorkbookAndSetStyle(wb, RED.index));
style.put("black", ExcelUtils.createWorkbookAndSetStyle(wb, BLACK.index));
style.put("blue", ExcelUtils.createWorkbookAndSetStyle(wb, BLUE.index));
다른 방법도 시도해보면서 더 좋은 방법이 있는지 찾아봐야겠다 😗
'Trouble Shooting' 카테고리의 다른 글
[AWS] Elastic Beanstalk 502 Bad Gatway 해결방법 (0) | 2021.04.17 |
---|---|
[Spring Boot & intelliJ] lombok cannot find symbol 해결 방법 (0) | 2020.12.22 |
[intelliJ] assertThat import 안되는 오류 (0) | 2020.08.19 |
[intelliJ] intelliJ Task와 Github 연동하기 (0) | 2020.06.22 |
[Spring Boot] H2를 사용하면서 자주 나오는 오류들 (2) | 2020.06.03 |