Spring-boot에 Apache Poi 소개 1 (생성하고 컨트롤러에서 호출 할 때까지)
14489 단어 spring-boot자바POIThymeleaf
목적
Spring-boot에서 Excel 서식 출력
이번에는 우선 Excel 파일을 생성하고 컨트롤러에서 호출하여 출력을 반환 (다운로드)까지
다음 번에는 기존 템플릿을 작성하고 다운로드하는 방법을 요약합니다.
환경
Spring-boot 1.3.1.RELEAS
java8
템플릿 엔진 Thymeleaf
IDE STS3.7.1
Apatch-Poi 3.13
절차
최종 프로젝트 구성
pom에 종속성 추가
pom.xml
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.13</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.13</version>
</dependency>
이상의 의존성을 추가.
version은 소개하는 Poi 버전
※실은 여기서 엉망이었다.
자신이 가지고 있던 환경에, poi 관련의 jar가 없고, 빌드 패스가 없었다.
이에 대해서는 후술한다.
화면에서 컨트롤러 조작
출력 버튼을 배치합니다.
test.html<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>top page</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
test
<p th:text="${msg}" />
<form th:action="@{/test/download}" method="post">
<input class="btn btn-danger" type="submit" value="出力" />
</form>
</body>
</html>
출력 버튼을 배치할 수 있었다.
여기서 action 속성에 대해/test/download를 호출하고 post 메소드를 사용합니다.
그것을 컨트롤러로받습니다.
컨트롤러
package com.example.web;
import java.util.Map;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import com.example.excelexport.ExcelBuilder;
@Controller
@RequestMapping("/test")
public class MainController {
@RequestMapping(method = RequestMethod.GET)
public String test(Model model) {
model.addAttribute("msg","サンプルメッセージ!");
return "test/test";
}
@RequestMapping(value = "download", method = RequestMethod.POST)
public ModelAndView download(Map<String, Object> model) throws Exception {
ModelAndView mav = new ModelAndView(new ExcelBuilder());
mav.addObject("fileName", "testExcel" + ".xls");
return mav;
}
}
이것의
발췌@RequestMapping(value = "download", method = RequestMethod.POST)
public ModelAndView download(Map<String, Object> model) throws Exception {
ModelAndView mav = new ModelAndView(new ExcelBuilder());
mav.addObject("fileName", "testExcel" + ".xls");
return mav;
}
ModelAndView 클래스는 Spring이 준비해 주는 클래스.
여기에 Excel을 만들어 넣어 돌려주면 다운로드가 된다.
Excel 만들기
프레임워크가 제공하는 poi 작업을 위한 추상 클래스
AbstractExcelView 상속
출력하는 Excel의 조작은 여기에서
ExcelBuilderpackage com.example.excelexport;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.web.servlet.view.document.AbstractExcelView;
public class ExcelBuilder extends AbstractExcelView {
@Override
protected void buildExcelDocument(Map<String, Object> model, HSSFWorkbook wb, HttpServletRequest req,
HttpServletResponse res) throws Exception {
String fileName = new String("サンプル.xls".getBytes("MS932"), "ISO-8859-1");
res.setHeader("Content-Disposition", "attachment; filename=" + fileName);
HSSFSheet sheet;
HSSFCell cell;
sheet = wb.createSheet("Spring");
cell = getCell(sheet, 0, 0);
setText(cell, "Spring-Excel test");
}
}
먼저 Component라는 것을 ComponentSchan에 알립니다.
buildExcelDocument 구현
이 가운데 서표 작성
AbstructExcelView를 구현한 서식 작성 클래스가 컨트롤러에서 호출되면
buildExcelDocument가 호출된다. 서식 작성
문제
jar 없음
Poi의 도입 (클래스 패스를 붙인다)
이미지는 에러가 모두 취해지고 있지만, poi 관계의 jar가 missing가 되어 있다.
그것을 경로의 지정된 부분에 배치합니다.
ht tp // //포이. 아파치. 오 rg / 도w 응아 d. HTML
Poi를 다운로드하고 압축을 풀면 다음과 같습니다.
이것을 빌드 경로 오류의 지적대로 배치하십시오.
예를 들면 jar의 배치 장소는 대체로 위와 같이 되어 있어,
이번에는 새 3.13 버전의 jar를 추가하기 위해 3.13 폴더를 추가하고 그 안에 jar를 배치합니다.
프로젝트를 업데이트하고 다시 빌드하면 jar missing 오류가 발생했습니다.
· stax-api-1.0.1.jar이 POI에 포함되지 않았으며 별도로 다운로드했습니다.
·poi-3.1334132.jar처럼 버전 번호가 들어 있지만, 빌드 패스에 등록되어 있는 대로의 이름 poi-3.13.jar 등으로 고친다.
AbstractExcelView의 상속 클래스가 poi의 클래스 가져 오기에서 오류가 발생합니다.
콘트롤러 클래스와 같은 패키지에 배치하고 있었기 때문에, 작동하지 않았던 것 같다.
서식 출력을 하는 클래스를 위한 패키지를 준비해, 거기에 배치해 컨트롤러로부터 호출하도록(듯이) 한 곳 해소
그것이 com.example.excelexport 패키지에 해당합니다.
도전
다음 번에는 원래 준비한 Excel 템플릿을 읽고 작성하는 방법을 찾습니다.
참고
Spring boot에서의 서식 출력
Spring MVC에서 Spring Boot로 탈바꿈하는 내용. Excel 출력을하고 있다.
htp : // bg. 반찬. jp/엔트리/2015/07/18/220959
htp : //b 류슈. bgs포 t. jp / 2015 / 04 / sp 린 굿 보오 t ぇ b. HTML
Spring MVC의 Excel 출력
htp : //b 류슈. bgs포 t. jp / 2015/08 / sp ring-boo t-u b. HTML
Reference
이 문제에 관하여(Spring-boot에 Apache Poi 소개 1 (생성하고 컨트롤러에서 호출 할 때까지)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yukihigasi/items/74c961cffe11899abab0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Spring-boot 1.3.1.RELEAS
java8
템플릿 엔진 Thymeleaf
IDE STS3.7.1
Apatch-Poi 3.13
절차
최종 프로젝트 구성
pom에 종속성 추가
pom.xml
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.13</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.13</version>
</dependency>
이상의 의존성을 추가.
version은 소개하는 Poi 버전
※실은 여기서 엉망이었다.
자신이 가지고 있던 환경에, poi 관련의 jar가 없고, 빌드 패스가 없었다.
이에 대해서는 후술한다.
화면에서 컨트롤러 조작
출력 버튼을 배치합니다.
test.html<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>top page</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
test
<p th:text="${msg}" />
<form th:action="@{/test/download}" method="post">
<input class="btn btn-danger" type="submit" value="出力" />
</form>
</body>
</html>
출력 버튼을 배치할 수 있었다.
여기서 action 속성에 대해/test/download를 호출하고 post 메소드를 사용합니다.
그것을 컨트롤러로받습니다.
컨트롤러
package com.example.web;
import java.util.Map;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import com.example.excelexport.ExcelBuilder;
@Controller
@RequestMapping("/test")
public class MainController {
@RequestMapping(method = RequestMethod.GET)
public String test(Model model) {
model.addAttribute("msg","サンプルメッセージ!");
return "test/test";
}
@RequestMapping(value = "download", method = RequestMethod.POST)
public ModelAndView download(Map<String, Object> model) throws Exception {
ModelAndView mav = new ModelAndView(new ExcelBuilder());
mav.addObject("fileName", "testExcel" + ".xls");
return mav;
}
}
이것의
발췌@RequestMapping(value = "download", method = RequestMethod.POST)
public ModelAndView download(Map<String, Object> model) throws Exception {
ModelAndView mav = new ModelAndView(new ExcelBuilder());
mav.addObject("fileName", "testExcel" + ".xls");
return mav;
}
ModelAndView 클래스는 Spring이 준비해 주는 클래스.
여기에 Excel을 만들어 넣어 돌려주면 다운로드가 된다.
Excel 만들기
프레임워크가 제공하는 poi 작업을 위한 추상 클래스
AbstractExcelView 상속
출력하는 Excel의 조작은 여기에서
ExcelBuilderpackage com.example.excelexport;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.web.servlet.view.document.AbstractExcelView;
public class ExcelBuilder extends AbstractExcelView {
@Override
protected void buildExcelDocument(Map<String, Object> model, HSSFWorkbook wb, HttpServletRequest req,
HttpServletResponse res) throws Exception {
String fileName = new String("サンプル.xls".getBytes("MS932"), "ISO-8859-1");
res.setHeader("Content-Disposition", "attachment; filename=" + fileName);
HSSFSheet sheet;
HSSFCell cell;
sheet = wb.createSheet("Spring");
cell = getCell(sheet, 0, 0);
setText(cell, "Spring-Excel test");
}
}
먼저 Component라는 것을 ComponentSchan에 알립니다.
buildExcelDocument 구현
이 가운데 서표 작성
AbstructExcelView를 구현한 서식 작성 클래스가 컨트롤러에서 호출되면
buildExcelDocument가 호출된다. 서식 작성
문제
jar 없음
Poi의 도입 (클래스 패스를 붙인다)
이미지는 에러가 모두 취해지고 있지만, poi 관계의 jar가 missing가 되어 있다.
그것을 경로의 지정된 부분에 배치합니다.
ht tp // //포이. 아파치. 오 rg / 도w 응아 d. HTML
Poi를 다운로드하고 압축을 풀면 다음과 같습니다.
이것을 빌드 경로 오류의 지적대로 배치하십시오.
예를 들면 jar의 배치 장소는 대체로 위와 같이 되어 있어,
이번에는 새 3.13 버전의 jar를 추가하기 위해 3.13 폴더를 추가하고 그 안에 jar를 배치합니다.
프로젝트를 업데이트하고 다시 빌드하면 jar missing 오류가 발생했습니다.
· stax-api-1.0.1.jar이 POI에 포함되지 않았으며 별도로 다운로드했습니다.
·poi-3.1334132.jar처럼 버전 번호가 들어 있지만, 빌드 패스에 등록되어 있는 대로의 이름 poi-3.13.jar 등으로 고친다.
AbstractExcelView의 상속 클래스가 poi의 클래스 가져 오기에서 오류가 발생합니다.
콘트롤러 클래스와 같은 패키지에 배치하고 있었기 때문에, 작동하지 않았던 것 같다.
서식 출력을 하는 클래스를 위한 패키지를 준비해, 거기에 배치해 컨트롤러로부터 호출하도록(듯이) 한 곳 해소
그것이 com.example.excelexport 패키지에 해당합니다.
도전
다음 번에는 원래 준비한 Excel 템플릿을 읽고 작성하는 방법을 찾습니다.
참고
Spring boot에서의 서식 출력
Spring MVC에서 Spring Boot로 탈바꿈하는 내용. Excel 출력을하고 있다.
htp : // bg. 반찬. jp/엔트리/2015/07/18/220959
htp : //b 류슈. bgs포 t. jp / 2015 / 04 / sp 린 굿 보오 t ぇ b. HTML
Spring MVC의 Excel 출력
htp : //b 류슈. bgs포 t. jp / 2015/08 / sp ring-boo t-u b. HTML
Reference
이 문제에 관하여(Spring-boot에 Apache Poi 소개 1 (생성하고 컨트롤러에서 호출 할 때까지)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yukihigasi/items/74c961cffe11899abab0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.13</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.13</version>
</dependency>
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>top page</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
test
<p th:text="${msg}" />
<form th:action="@{/test/download}" method="post">
<input class="btn btn-danger" type="submit" value="出力" />
</form>
</body>
</html>
package com.example.web;
import java.util.Map;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import com.example.excelexport.ExcelBuilder;
@Controller
@RequestMapping("/test")
public class MainController {
@RequestMapping(method = RequestMethod.GET)
public String test(Model model) {
model.addAttribute("msg","サンプルメッセージ!");
return "test/test";
}
@RequestMapping(value = "download", method = RequestMethod.POST)
public ModelAndView download(Map<String, Object> model) throws Exception {
ModelAndView mav = new ModelAndView(new ExcelBuilder());
mav.addObject("fileName", "testExcel" + ".xls");
return mav;
}
}
@RequestMapping(value = "download", method = RequestMethod.POST)
public ModelAndView download(Map<String, Object> model) throws Exception {
ModelAndView mav = new ModelAndView(new ExcelBuilder());
mav.addObject("fileName", "testExcel" + ".xls");
return mav;
}
package com.example.excelexport;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.web.servlet.view.document.AbstractExcelView;
public class ExcelBuilder extends AbstractExcelView {
@Override
protected void buildExcelDocument(Map<String, Object> model, HSSFWorkbook wb, HttpServletRequest req,
HttpServletResponse res) throws Exception {
String fileName = new String("サンプル.xls".getBytes("MS932"), "ISO-8859-1");
res.setHeader("Content-Disposition", "attachment; filename=" + fileName);
HSSFSheet sheet;
HSSFCell cell;
sheet = wb.createSheet("Spring");
cell = getCell(sheet, 0, 0);
setText(cell, "Spring-Excel test");
}
}
jar 없음
Poi의 도입 (클래스 패스를 붙인다)
이미지는 에러가 모두 취해지고 있지만, poi 관계의 jar가 missing가 되어 있다.
그것을 경로의 지정된 부분에 배치합니다.
ht tp // //포이. 아파치. 오 rg / 도w 응아 d. HTML
Poi를 다운로드하고 압축을 풀면 다음과 같습니다.
이것을 빌드 경로 오류의 지적대로 배치하십시오.
예를 들면 jar의 배치 장소는 대체로 위와 같이 되어 있어,
이번에는 새 3.13 버전의 jar를 추가하기 위해 3.13 폴더를 추가하고 그 안에 jar를 배치합니다.
프로젝트를 업데이트하고 다시 빌드하면 jar missing 오류가 발생했습니다.
· stax-api-1.0.1.jar이 POI에 포함되지 않았으며 별도로 다운로드했습니다.
·poi-3.1334132.jar처럼 버전 번호가 들어 있지만, 빌드 패스에 등록되어 있는 대로의 이름 poi-3.13.jar 등으로 고친다.
AbstractExcelView의 상속 클래스가 poi의 클래스 가져 오기에서 오류가 발생합니다.
콘트롤러 클래스와 같은 패키지에 배치하고 있었기 때문에, 작동하지 않았던 것 같다.
서식 출력을 하는 클래스를 위한 패키지를 준비해, 거기에 배치해 컨트롤러로부터 호출하도록(듯이) 한 곳 해소
그것이 com.example.excelexport 패키지에 해당합니다.
도전
다음 번에는 원래 준비한 Excel 템플릿을 읽고 작성하는 방법을 찾습니다.
참고
Spring boot에서의 서식 출력
Spring MVC에서 Spring Boot로 탈바꿈하는 내용. Excel 출력을하고 있다.
htp : // bg. 반찬. jp/엔트리/2015/07/18/220959
htp : //b 류슈. bgs포 t. jp / 2015 / 04 / sp 린 굿 보오 t ぇ b. HTML
Spring MVC의 Excel 출력
htp : //b 류슈. bgs포 t. jp / 2015/08 / sp ring-boo t-u b. HTML
Reference
이 문제에 관하여(Spring-boot에 Apache Poi 소개 1 (생성하고 컨트롤러에서 호출 할 때까지)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yukihigasi/items/74c961cffe11899abab0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Spring boot에서의 서식 출력
Spring MVC에서 Spring Boot로 탈바꿈하는 내용. Excel 출력을하고 있다.
htp : // bg. 반찬. jp/엔트리/2015/07/18/220959
htp : //b 류슈. bgs포 t. jp / 2015 / 04 / sp 린 굿 보오 t ぇ b. HTML
Spring MVC의 Excel 출력
htp : //b 류슈. bgs포 t. jp / 2015/08 / sp ring-boo t-u b. HTML
Reference
이 문제에 관하여(Spring-boot에 Apache Poi 소개 1 (생성하고 컨트롤러에서 호출 할 때까지)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yukihigasi/items/74c961cffe11899abab0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)