1. 참조: https://blog.naver.com/shyoon991/222740821774 //

  2. JXLS란

    1. 엑셀 템플릿 + 데이터 ⇒ 원하는 결과물
    2. 원하는 엑셀 템플릿에 데이터를 바인딩해주는 라이브러리
    3. 기존 poi등 다른 라이브러리와는 달리 스타일에 대해 신경쓰지 않아도 됨(템플릿에 적용된 스타일은 적용하면서 데이터를 바인딩)
    4. key값에 맞춰 list만 넘겨주면 반복으로 돌아서 바인딩해줌
    5. 하지만, 많은 데이터를 넘겨주었을 때 감당하지 못하고 죽어버림(로그 데이터처럼 양이 많은 데이터)
  3. 라이브러리

    1. build.gradle

      implementation: "org.jxls.jxls:2.6.0"
      implementation: "org.jxls:jxls-poi:1.2.0"
      
  4. 구현 코드

    1. 서비스

      따로 반환하는 객체는 없으며 JxlsHelper부분을 통해 외부로 반환해줌(API 코드 기준)
주의해야할 부분은 context.putVar()메서드에서 키 값을 템플릿에 작성한 것과 똑같이 줘야함

      따로 반환하는 객체는 없으며 JxlsHelper부분을 통해 외부로 반환해줌(API 코드 기준) 주의해야할 부분은 context.putVar()메서드에서 키 값을 템플릿에 작성한 것과 똑같이 줘야함

    2. 컨트롤러

      Untitled

  5. 템플릿 작성

    Untitled

    1. 기본적으로 엑셀의 메모기능을 참조하여 데이터를 바인딩할 데이터랑 구역을 작성
    2. jx:area
      1. 라이브러리에게 어떤 위치의 셀을 사용할 것인지 명시하는 부분
      2. 메모를 작성하는 위치는 템플릿을 작성한 가장 첫번째 셀(예제에서는 D1셀에 해당함)
      3. lastCell은 바인딩할 변수가 작성된 셀까지 포함한 부분(예제에서는 J8셀에 해당함)
    3. jx:each
      1. items는 코드에서 context.putVar()메서드에서 사용한 키값과 같아야함(예제에서는 list를 키값으로 사용함)
      2. var는 해당 리스트에서 객체를 담을 변수명을 작성(예제에서는 m으로 작성)
      3. var에 작성한 변수명을 기준으로 셀의 바인딩할 데이터를 작성**(예: ${m.name} → 변수로 받은 객체에서 name 프로퍼티를 가져오겠다는 의미)**
      4. lastCelljx:arealastCell과 같은 의미
    4. 메모 작성하는 대신 XML파일을 작성하는 방식으로 대체 가능