일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- html
- DML
- select문
- github
- mybatis
- 개발자
- 스프링
- order by
- Linux
- 백엔드
- Java
- Git
- 데이터 조회
- scanner
- String클래스
- 자바스크립트
- 프론트엔드
- 형변환
- 웹개발
- 프로그래머스 SQL
- 프로그래밍
- 정보처리기사
- 메서드
- 정보처리기사필기요약
- 백준
- 예외처리
- StringBuilder
- JavaScript
- select
- 자바
- SQL
- 프로그래머스 sql 고득점 kit
- 클래스
- BufferedReader
- 리눅스
- 입출력
- 알고리즘
- sql문
- where
- MySQL
- Today
- Total
ToBe끝판왕
[ Poi 라이브러리 ] JAVA로 Excel 다운로드 기능 구현 (1) 본문
환경 세팅
▶ 기본적인 환경설정
• 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/
• 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();
}
}
• 결과물
'■ 공부 기록 > 기능 구현' 카테고리의 다른 글
[ Poi 라이브러리 ] JAVA로 Excel 다운로드 기능 구현 (2) (0) | 2024.04.07 |
---|