1. 엑셀 다운로드 기능

    1. 참조: https://jhhan009.tistory.com/67

    2. 라이브러리

      implementation 'org.apache.poi:poi:4.1.2' // HSSFWorkbook 사용가능(.xls 확장자)
      implementation 'org.apache.poi:poi-ooxml:4.1.2' // XSSFWorkbook 사용가능(.xlsx 확장자)
      
    3. 구현 코드

      Untitled

      1. 간단한 테스트를 위해 컨트롤러에 로직을 작성함 → 보통 로직은 서비스로 분리
      2. 가장 먼저 Workbook타입의 객체를 생성(이부분이 엑셀 파일 자체라고 생각됨)
      3. Workbook객체의 createSheet() 메서드를 사용해서 시트를 생성(파라미터로 시트이름 받음)
      4. 코드에서 row는 열에 해당하는 객체, cell은 열의 셀 하나하나를 의미함
      5. HttpServletResponse필요로 하는 이유
        1. Content-Type을 엑셀 파일임을 알려줘야함
        2. Content-disposition을 통해 파일이름 설정
      6. 마지막으로 Workbook객체의 write() 메서드를 통해 다운로드된다고 보면 됨
      7. write()메서드에서 받는 OutPutStream객체는 출력을 위해 사용되는 객체인데, poi라이브러리에서 엑셀 파일을 출력하기 위해 사용하는 듯
    4. 결과물

      Untitled

  2. 엑셀 업로드

    1. 참조: https://sowon-dev.github.io/2021/08/09/210810Spring-excel/

    2. 라이브러리

      implementation 'org.apache.poi:poi:4.1.2' // HSSFWorkbook 사용가능(.xls 확장자)
      implementation 'org.apache.poi:poi-ooxml:4.1.2' // XSSFWorkbook 사용가능(.xlsx 확장자)
      
    3. 구현 코드

      Untitled

      1. 파일을 가져오는 방법
        1. OPCPackage는 엑섹 2007버전이후만 읽어올 수 있는 클래스
        2. XSSFWorkbook은 OPCPackage, InputStream, File, String(path)타입을 받아 workbook형태로 만들 수 있음
      2. 만일 sheet 여러개를 읽어들일 경우 workbook객체의 getNumberOfSheets()메서드를 통해 총 sheet개수를 받아 반복문을 돌려서 읽을 수 있음
      3. Row의 총개수는 sheet객체의 getLastRowNum()메서드를 통해 얻을 수 있음
      4. 모든 위치 0부터 시작하지만 Row객체 1부터 가져오는 이유는 보통 0번째 Row는 제목을 사용하기 때문
    4. 결과물

      Untitled