springboot中数据库数据导出excel实例(附工具)

编程入门 行业动态 更新时间:2024-10-10 06:16:37

springboot中数据库数据导出excel<a href=https://www.elefans.com/category/jswz/34/1771375.html style=实例(附工具)"/>

springboot中数据库数据导出excel实例(附工具)

实体类:

package com.imagedt.pawpaw.model.dto;import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.util.Date;@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserExportExcelDto {@Excel(name = "用户名", width = 10)private String username;@Excel(name = "创建时间", format = "yyyy/MM/dd", width = 15)private Date createTime;}

Controller:

/*** 导出用户数据* @param response*/@RequestMapping(value = "/export", method = RequestMethod.GET)public void exportExcel(HttpServletResponse response){List<UserExportExcelDto> userList = new ArrayList<>();userList.add(new UserExportExcelDto("tom", new Date()));userList.add(new UserExportExcelDto("jack", new Date()));userList.add(new UserExportExcelDto("123", new Date()));EasyPoiUtil.exportExcel(userList, "用户数据", "用户数据", UserExportExcelDto.class, "用户数据.xls", response);
//        EasyPoiUtil.exportExcel(userList, UserExportExcelDto.class, "用户数据.xls", response);}

使用到的依赖(版本可以更换):

		<dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>3.0.1</version></dependency><dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-web</artifactId><version>3.0.1</version></dependency><dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-annotation</artifactId><version>3.0.1</version></dependency><!-- 集成springboot web组件 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>

EasyPoiUtil 可以直接用

package com.imagedt.pawpaw.util;import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import org.apachemons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.web.multipart.MultipartFile;import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.URLEncoder;
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;/*** @Auther: mousejoo* @Date: 2018/10/9 13:54* @Description:*/
public class EasyPoiUtil {/*** 功能描述:复杂导出Excel,包括文件名以及表名。创建表头** @author mousejoo* @date 2018/10/9 13:54* @param list 导出的实体类* @param title 表头名称* @param sheetName sheet表名* @param pojoClass 映射的实体类* @param isCreateHeader 是否创建表头* @param fileName* @param response* @return*/public static void exportExcel(List<?> list, String title, String sheetName, Class<?> pojoClass, String fileName, boolean isCreateHeader, HttpServletResponse response) {ExportParams exportParams = new ExportParams(title, sheetName);exportParams.setCreateHeadRows(isCreateHeader);defaultExport(list, pojoClass, fileName, response, exportParams);}/*** 功能描述:复杂导出Excel,包括文件名以及表名,不创建表头* @author mousejoo* @date 2018/10/9 13:54* @param list 导出的实体类* @param pojoClass 映射的实体类* @param fileName* @param response* @return*/public static void exportExcel(List<?> list, Class<?> pojoClass, String fileName, HttpServletResponse response) {defaultExport(list, pojoClass, fileName, response, new ExportParams());}/*** 功能描述:复杂导出Excel,包括文件名以及表名,不创建表头** @author mousejoo* @date 2018/10/9 13:54* @param list 导出的实体类* @param title 表头名称* @param sheetName sheet表名* @param pojoClass 映射的实体类* @param fileName* @param response* @return*/public static void exportExcel(List<?> list, String title, String sheetName, Class<?> pojoClass, String fileName, HttpServletResponse response) {defaultExport(list, pojoClass, fileName, response, new ExportParams(title, sheetName));}/*** 功能描述:Map 集合导出** @author mousejoo* @date 2018/10/9 13:54* @param list 实体集合* @param fileName 导出的文件名称* @param response* @return*/public static void exportExcel(List<Map<String, Object>> list, String fileName, HttpServletResponse response) {defaultExport(list, fileName, response);}/*** 功能描述:默认导出方法** @author mousejoo* @date 2018/10/9 13:54* @param list 导出的实体集合* @param fileName 导出的文件名* @param pojoClass pojo实体* @param exportParams ExportParams封装实体* @param response* @return*/private static void defaultExport(List<?> list, Class<?> pojoClass, String fileName, HttpServletResponse response, ExportParams exportParams) {Workbook workbook = ExcelExportUtil.exportExcel(exportParams, pojoClass, list);if (workbook != null) {downLoadExcel(fileName, response, workbook);}}/*** 功能描述:Excel导出** @author mousejoo* @date 2018/10/9   15:35* @param fileName 文件名称* @param response* @param workbook Excel对象* @return*/private static void downLoadExcel(String fileName, HttpServletResponse response, Workbook workbook) {try {response.setCharacterEncoding("UTF-8");response.setHeader("content-Type", "application/vnd.ms-excel");response.setHeader("Content-Disposition", "attachment;filename=" +URLEncoder.encode(fileName, "UTF-8") );workbook.write(response.getOutputStream());} catch (IOException e) {throw new  RuntimeException(e);}}/*** 功能描述:默认导出方法** @author mousejoo* @date 2018/7/23 15:33* @param list 导出的实体集合* @param fileName 导出的文件名* @param response* @return*/private static void defaultExport(List<Map<String, Object>> list, String fileName, HttpServletResponse response) {Workbook workbook = ExcelExportUtil.exportExcel(list, ExcelType.HSSF);if (workbook != null) ;downLoadExcel(fileName, response, workbook);}/*** 功能描述:根据文件路径来导入Excel** @author mousejoo* @date 2018/10/9 14:17* @param filePath 文件路径* @param titleRows 表标题的行数* @param headerRows 表头行数* @param pojoClass Excel实体类* @return*/public static <T> List<T> importExcel(String filePath, Integer titleRows, Integer headerRows, Class<T> pojoClass) {//判断文件是否存在if (StringUtils.isBlank(filePath)) {return null;}ImportParams params = new ImportParams();params.setTitleRows(titleRows);params.setHeadRows(headerRows);List<T> list = null;try {list = ExcelImportUtil.importExcel(new File(filePath), pojoClass, params);} catch (NoSuchElementException e) {throw new RuntimeException("模板不能为空");} catch (Exception e) {e.printStackTrace();}return list;}/*** 功能描述:根据接收的Excel文件来导入Excel,并封装成实体类** @author mousejoo* @date 2018/10/9 14:17* @param file 上传的文件* @param titleRows 表标题的行数* @param headerRows 表头行数* @param pojoClass Excel实体类* @return*/public static <T> List<T> importExcel(MultipartFile file, Integer titleRows, Integer headerRows, Class<T> pojoClass) {if (file == null) {return null;}ImportParams params = new ImportParams();params.setTitleRows(titleRows);params.setHeadRows(headerRows);List<T> list = null;try {list = ExcelImportUtil.importExcel(file.getInputStream(), pojoClass, params);} catch (NoSuchElementException e) {throw new RuntimeException("excel文件不能为空");} catch (Exception e) {throw new RuntimeException(e.getMessage());}return list;}}

更多推荐

springboot中数据库数据导出excel实例(附工具)

本文发布于:2024-02-19 18:02:43,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1765100.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:实例   数据库   工具   数据   springboot

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!