개발/끄적

엑셀 다운로드 코드 개선....

study-minjeong 2024. 8. 22. 09:07

엑셀 파일을 만들 때 셀 하나하나 스타일을 정해주고, 값을 넣어줘야해서 코드가 점점 지저분해지고, 반복되는 코드들이 많아지기 시작했다.. 이를 최대한 개선해보고자 한다!

 

지금 내가 생각하는 문제점은

1. 행을 생성할 때마다 열 번호를 초기화 해줘야한다. 코드 반복 발생

2. 스타일을 입히기 위해서 셀을 합칠 때 모든 셀에 스타일을 적용시켜줘야한다. 반복문을 사용하면 코드가 길어진다. 

3. 얻은 데이터를 정제해서 셀에 값을 입력해야하는데 그 과정이 추가돼서 지저분해보인다. 

 

 

양식이 일정하면 반복문을 돌려서 깔끔하게 작성할 수 있을 것 같은데, 정해진 양식대로 하다보니까 복잡해지고 지저분해진 것 같다. 어떻게 해결하지..?

 

일단 최대한 고쳐보려고 노력했다!

1) 기존에 열 번호를 초기화 시켜줘야했던 이유는 셀을 생성할 때마다 cellNum++를 사용했다. 

    이 방식을 사용하지 않고, startCellNum = 0 으로 명시해두고 startCellNum에 +값을 해주는 것으로 변경했다.

    어차피 셀 합치기 위해서 startCellNum을 명시하기 때문이다....  

   -> 아 그냥 숫자로 명시해주는 걸로 바꿈

2) 셀을 합칠 때마다 반복문을 작성해주었는데 ExcelUtil에 따로 셀병합 함수를 만들어두었다.

    파라미터로 전해줘야할 것(workboot, sheet, 값, 열, cellRangeAddress)은 많지만 코드가 간결해진 것 같기도...하다..

3) 엑셀에 값을 추가하면서 데이터를 가공하지말고, Enum이나 함수를 이용해서 가공하도록 했다. 

    예를 들어 코드로 상태값을 문자열로 변환해야하면 Enum(코드, 문자열) 내에서 코드를 문자열로 변환시키도록 하였다.

 

코드도 조금 간결해졌고, 결과도 잘 나오지만.... 젤 효율적인 방법은 아닌 것 같다^_^..

 

 

 

+) 추가

컬럼 정보 dto를 만들었다.

값, 스타일, 크기를 설정하여 한 행에 대한 dto 리스트를 만들고, 열 번호를 증가해주면서 컬럼을 생성한다.

크기로 셀 병합을 할 수 있음

스타일은 enum으로 분류해둬 CellStyle을 리턴받을 수 있도록 하였다.