SpringBoot 내 보 내기 데이터 생 성 excel 파일 반환 방식
11754 단어 SpringBoot도 출데이터excel
1.IDE
IntelliJ IDEA
2.소프트웨어 환경
Spring boot
mysql
mybatis
org.apache.poi
2.환경 통합
1.spring boot 프로젝트 프로젝트 만 들 기
생략 하 다
2.maven 도입 poi
<!-- excel-->
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml-schemas -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.17</version>
</dependency>
<!-- End excel-->
3.코드 구현클 라 우 드 my sql 데이터 의 사용자 표를 내 보 내 는 것 을 예 로 들 면(데 이 터 는 허위 데이터)
1.xls 표 헤더 설정
내 보 낼 my sql 표 와 xls 표 의 관 계 를 유지 하기 위해 class(ColumnTitleMap)를 만 듭 니 다.
코드 주석 이 이미 명확 해 졌 으 니 더 이상 군말 하지 않 겠 다.
/**
* @desc: , excel
* @author: chao
* @time: 2018.6.11
*/
public class ColumnTitleMap {
private Map<String, String> columnTitleMap = new HashMap<String, String>();
private ArrayList<String> titleKeyList = new ArrayList<String> ();
public ColumnTitleMap(String datatype) {
switch (datatype) {
case "userinfo":
initUserInfoColu();
initUserInfoTitleKeyList();
break;
default:
break;
}
}
/**
* mysql --
*/
private void initUserInfoColu() {
columnTitleMap.put("id", "ID");
columnTitleMap.put("date_create", " ");
columnTitleMap.put("name", " ");
columnTitleMap.put("mobile", " ");
columnTitleMap.put("email", " ");
columnTitleMap.put("pw", " ");
columnTitleMap.put("notice_voice", " ");
columnTitleMap.put("notice_email", " ");
columnTitleMap.put("notice_sms", " ");
columnTitleMap.put("notice_push", " ");
}
/**
* mysql
*/
private void initUserInfoTitleKeyList() {
titleKeyList.add("id");
titleKeyList.add("date_create");
titleKeyList.add("name");
titleKeyList.add("mobile");
titleKeyList.add("email");
titleKeyList.add("pw");
titleKeyList.add("notice_voice");
titleKeyList.add("notice_email");
titleKeyList.add("notice_sms");
titleKeyList.add("notice_push");
}
public Map<String, String> getColumnTitleMap() {
return columnTitleMap;
}
public ArrayList<String> getTitleKeyList() {
return titleKeyList;
}
}
2.controller대외 인터페이스 제공,ExportDataController.자바
package com.mcrazy.apios.controller;
import com.mcrazy.apios.service.ExportDataService;
import com.mcrazy.apios.service.UserInfoService;
import com.mcrazy.apios.util.datebase.columntitle.ColumnTitleMap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @desc: api
* @author: chao
* @time: 2018.6.11
*/
@Controller
@RequestMapping(value = "/exportdata")
public class ExportDataController {
@Autowired
UserInfoService userInfoService;
@Autowired
ExportDataService exportDataService;
/**
* @api: /apios/exportdata/excel/
* @method: GET
* @desc: , xlsx
* @param response
* @param date_start , ( , )
* @param date_end , ( , )
*/
@GetMapping(value = "/excel")
public void getUserInfoEx(
HttpServletResponse response,
@RequestParam String date_start,
@RequestParam String date_end
) {
try {
List<Map<String,Object>> userList = userInfoService.queryUserInfoResultListMap();
ArrayList<String> titleKeyList= new ColumnTitleMap("userinfo").getTitleKeyList();
Map<String, String> titleMap = new ColumnTitleMap("userinfo").getColumnTitleMap();
exportDataService.exportDataToEx(response, titleKeyList, titleMap, userList);
} catch (Exception e) {
//
System.out.println(e.toString());
}
}
}
3.service(1).사용자 테이블 데이터
UserInfoMapper.java
package com.mcrazy.apios.mapper;
import com.mcrazy.apios.model.UserInfo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Map;
@Mapper
public interface UserInfoMapper {
/**
* @desc
* @return List
* */
List<Map<String,Object>> queryUserInfoResultListMap();
}
UserInfoMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.mcrazy.apios.mapper.UserInfoMapper">
<select id="queryUserInfoResultListMap" resultType="HashMap">
select * from user_info
</select>
</mapper>
UserInfoService.java
package com.mcrazy.apios.service;
import com.mcrazy.apios.mapper.UserInfoMapper;
import com.mcrazy.apios.model.UserInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
@Service
public class UserInfoService {
@Autowired
UserInfoMapper userInfoMapper;
/**
* @desc
* @return List
* */
public List<Map<String,Object>> queryUserInfoResultListMap() {
List<Map<String,Object>> list = userInfoMapper.queryUserInfoResultListMap();
return list;
}
}
(2).엑셀 파일 생 성 및 내 보 내기ExportDataService.java
package com.mcrazy.apios.service;
import com.mcrazy.apios.util.datebase.ExportExcelUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @desc:
* @author: chao
* @time: 2018.6.11
*/
@Service
public class ExportDataService {
@Autowired
ExportExcelUtil exportExcelUtil;
/* */
public void exportDataToEx(HttpServletResponse response, ArrayList<String> titleKeyList, Map<String, String> titleMap, List<Map<String,Object>> src_list) {
try {
exportExcelUtil.expoerDataExcel(response, titleKeyList, titleMap, src_list);
} catch (Exception e) {
System.out.println("Exception: " + e.toString());
}
}
}
내 보 내기 도구 패키지,ExportExcelUtil.java
package com.mcrazy.apios.util.datebase;
import com.mcrazy.apios.util.object.DateUtils;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @desc: , excel
* @author: chao
* @time: 2018.6.12
*/
@Service
public class ExportExcelUtil {
public void expoerDataExcel(HttpServletResponse response, ArrayList<String> titleKeyList, Map<String, String> titleMap, List<Map<String,Object>> src_list) throws IOException {
String xlsFile_name = DateUtils.currtimeToString14() + ".xlsx"; // xls
// 100
Workbook wb = new SXSSFWorkbook(100); //
Sheet sheet = null; //
Row nRow = null; //
Cell nCell = null; //
int rowNo = 0; //
int pageRowNo = 0; //
for (int k=0;k<src_list.size();k++) {
Map<String,Object> srcMap = src_list.get(k);
// 300000
if(rowNo%300000==0){
wb.createSheet(" "+(rowNo/300000));// sheet
sheet = wb.getSheetAt(rowNo/300000); //
pageRowNo = 0; // , 0
// ----------- -----------
nRow = sheet.createRow(pageRowNo++);
// titleKeyList.size()
for(int i=0;i<titleKeyList.size();i++){
Cell cell_tem = nRow.createCell(i);
cell_tem.setCellValue(titleMap.get(titleKeyList.get(i)));
}
rowNo++;
// ---------------------------
}
rowNo++;
nRow = sheet.createRow(pageRowNo++); //
// , cell
for(int j=0;j<titleKeyList.size();j++){
nCell = nRow.createCell(j);
if (srcMap.get(titleKeyList.get(j)) != null) {
nCell.setCellValue(srcMap.get(titleKeyList.get(j)).toString());
} else {
nCell.setCellValue("");
}
}
}
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setHeader("Content-disposition", "attachment;filename=" + xlsFile_name);
response.flushBuffer();
OutputStream outputStream = response.getOutputStream();
wb.write(response.getOutputStream());
wb.close();
outputStream.flush();
outputStream.close();
}
}
운행이로써 모든 코드 작업 이 완료 되 어 프로그램 을 실행 하고 브 라 우 저 에서 인 터 페 이 스 를 호출 하면 자동 으로 컴퓨터 에 다운 로드 됩 니 다.
브 라 우 저 열기:
http://192.168.1.70:8080/apios/exportdata/excel/?time_start=2018-12-19&end_start=2018-12-19
효과.
xlsx 파일 을 가 져 와 데 이 터 를 봅 니 다.
이상 의 SpringBoot 에서 데 이 터 를 내 보 내 서 엑셀 파일 을 만 드 는 반환 방식 은 바로 작은 편집 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.참고 하 실 수 있 고 저 희 를 많이 사랑 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Java・SpringBoot・Thymeleaf】 에러 메세지를 구현(SpringBoot 어플리케이션 실천편 3)로그인하여 사용자 목록을 표시하는 응용 프로그램을 만들고, Spring에서의 개발에 대해 공부하겠습니다 🌟 마지막 데이터 바인딩에 계속 바인딩 실패 시 오류 메시지를 구현합니다. 마지막 기사🌟 src/main/res...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.