ToBe끝판왕

[ Poi 라이브러리 ] JAVA로 Excel 다운로드 기능 구현 (1) 본문

■ 공부 기록/기능 구현

[ Poi 라이브러리 ] JAVA로 Excel 다운로드 기능 구현 (1)

업그레이드중 2024. 4. 7. 14:45
반응형

 

 


 

 

환경 세팅

 

 

 

▶  기본적인 환경설정

•  InteliJ + SpringFramework + Maven 프로젝트
•  JDK 버전 : 1.8
•  SpringFramework 버전 : 5.2.3 release
•  Apache POI 버전 : 4.1.2
•  Servlet Api 버전 : 3.1.0


※ POI 라이브러리 호환성
•  JDK 1.8 이상 > POI 4.0 이상
•  JDK 1.6 이상 > POI 3.11 & 3.x 버전
•  JDK 1.5 이상 > POI 3.5 ~ 3.10 버전
•  JDK 1.4 이상 > POI 3.5 버전까지는

 

 

 

▶  Apache POI 라이브러리

Apache POI ( Poor Obfuscation Implementation ) 은 Java 프로그래밍 언어를 사용하여 Microsoft Office 형식의

문서를 읽고 쓰는데 사용되는 라이브러리이다.

 

 

•  Apache POI 라이브러리 버전별 다운로드 링크

https://archive.apache.org/dist/poi/release/src/

 

Index of /dist/poi/release/src

 

archive.apache.org

 

 

•  POI 라이브러리 사용을 위한  pom.xml 에 의존성 주입

    <!-- 엑셀 다운로드 위한 Apache Poi 라이브러리 의존성 주입 -->
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi</artifactId>
      <version>4.1.2</version>
    </dependency>

    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-ooxml</artifactId>
      <version>4.1.2</version>
    </dependency>

 

 

•  주요 클래스

- HSSF : 엑셀 97 ~ 2003 버전 , 65535 라인 까지 사용 가능 ( 확장자 .xls )

- XSSF : 엑셀 2007 버전 이상, 65535 라인 이상 사용 가능 ( 확장자 .xlsx )

- SXSSF : XSSF의 Streaming 버전으로, 메모리를 적게 사용하며 65535 라인 이상 사용 가능 ( 확장자 .xlsx )

 

 

•  주요 메서드

- workbook 객체 생성 ( = Excel 파일을 생성 )

- createSheet()

- createRow()

- createCell()

- setCellValue()

// 워크북 객체 생성
XSSFWorkbook wb = new XSSFWorkbook();

// 시트 생성
// workbook 객체를 참조하여 Excel 파일에 새로운 Sheet 생성
XSSFSheet sheet = wb.createSheet();

// 행(Row) 생성
// Sheet 객체를 참조하여 시트에 새로운 행 생성
XSSFRow row = sheet.createRow();

// 열(Cell) 생성
// Row 객체를 참조하여 행에 새로운 열 생성
XSSFCell cell = row.createCell();

// 열에 값 넣기
cell.setCellValue();

 

 

 

▶  Apache POI 라이브러리 활용 및 Excel 파일 다운로드 소스 예제

•  View 페이지 + Controller 로 소스 구현

•  기본적인 Excel 다운로드 기능 구현

 

•  View 페이지 ( excel1.jsp )

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>엑셀다운로드 연습 1 페이지</title>
</head>
<body>
    <form action="/download.do" method="get">
        <button type="submit">엑셀다운</button>
    </form>
</body>
</html>

 

 

•  Controller ( CalController.java )

@RequestMapping(value = "/download.do", method = RequestMethod.GET)
    public void download(HttpServletResponse response) throws Exception {

        // 엑셀파일 생성
        XSSFWorkbook wb = new XSSFWorkbook();

        // 엑셀파일 내 시트 생성
        // createSheet("시트명")
        Sheet sheet = wb.createSheet("엑셀테스트");

        // Row 순서 / Cell 순서 변수 선언 및 초기화
        int rowCount = 0;
        int cellCount = 0;

        // Header 설정
        // 행(Row) 과 열(Cell) 을 생성
        // 번호 , 이름, 학년 값이 들어가 있는 Hedaer Row 생성
        Row headerRow = sheet.createRow(rowCount++);
        headerRow.createCell(0).setCellValue("번호");
        headerRow.createCell(1).setCellValue("이름");
        headerRow.createCell(2).setCellValue("학년");

        // Body 설정
        // i 번째 Row 에서 i , i + 이름 , i + 학년 값이 나오게 반복문
        for (int i = 0; i < 3; i++) {
            Row bodyRow = sheet.createRow(rowCount++);
            bodyRow.createCell(0).setCellValue(i);
            bodyRow.createCell(1).setCellValue(i + " 이름");
            bodyRow.createCell(2).setCellValue(i + " 학년");
        }

        // Excel 파일 다운로드
        // 컨텐츠 타입 및 파일명 지정
        response.setContentType("ms-vnd/excel");
        response.setHeader("Content-Disposition", "attachment;filename=test.xlsx");

        try {
            wb.write(response.getOutputStream());
            wb.close();
        } catch (Exception e) {
            e.getMessage();
        }

    }

 

 

 

•  결과물

test.xlsx 파일명으로 받아진&nbsp; Excel 파일

 

반응형
Comments