SpringBoot下载excel表格

git地址:https://gitee.com/benming-walnut/download-excel.git

1.目录结构

2.相关依赖

    <parent><artifactId>spring-boot-starter-parent</artifactId><groupId>org.springframework.boot</groupId><version>2.3.8.RELEASE</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--处理excel、word--><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.0</version></dependency></dependencies>

3.启动类

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class DownloadExcelApplication {public static void main(String[] args) {SpringApplication.run(DownloadExcelApplication.class, args);}
}

4.工具类

package com.qq.utils;import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;/*** @author 黔程似景* @description 用于对象转map* @date 2021/11/18 20:59**/
public class BeanUtils {private BeanUtils() {}/*** 对象转map集合** @param o 需要转换成hashMap的集合* @return* @throws Exception*/public static HashMap<String, Object> objectToMap(Object o) throws Exception {HashMap<String, Object> hashMap = new HashMap<>();Class cls = o.getClass();Field[] fields = cls.getDeclaredFields();for (int i = 0; i < fields.length; i++) {Field f = fields[i];f.setAccessible(true);hashMap.put(f.getName(), f.get(o));}return hashMap;}/*** 对象集合转map版本的集合** @param list* @return* @throws Exception*/public static <E> List<Map<String, Object>> getMapList(List<E> list) throws Exception {List<Map<String, Object>> result = new ArrayList<>();if (list == null) {return result;}for (Object o : list) {HashMap<String, Object> hashMap = objectToMap(o);result.add(hashMap);}return result;}}

5.实体对象

/*** @author 黔程似景* @description TODO* @date 2021/11/18 21:04**/
public class User {private String id;private String name;public User(String id, String name) {this.id = id;this.name = name;}}

6.Controller

import com.qq.service.DownloadExcelService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;/*** @author 黔程似景* @description TODO* @date 2021/11/18 20:56**/
@RestController
public class DownloadExcelController {@Resourceprivate DownloadExcelService downloadExcelService;@GetMapping("/download")public void download(HttpServletResponse response){downloadExcelService.download(response);}}

7.Service

import com.qq.entity.User;
import com.qq.service.DownloadExcelService;
import com.qq.utils.BeanUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.springframework.stereotype.Service;import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;/*** @author 黔程似景* @description TODO* @date 2021/11/18 21:02**/
@Service
public class DownloadExcelServiceImpl implements DownloadExcelService {/*** 下载excel表格* @param response*/@Overridepublic void download(HttpServletResponse response) {try (OutputStream outputStream = response.getOutputStream()) {response.setContentType("application/octet-stream");response.setCharacterEncoding("UTF-8");String s = "导出资源" + ".xls";response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(s, "UTF-8"));//获取资源,仅支持对象,不支持hashMapList<User> list = new ArrayList<>();User user = new User("1", "法外狂徒");for (int i = 0; i < 10; i++) {list.add(user);}//excel表,表头和表数据对应关系LinkedHashMap<String, String> map = getColumn();//将对象转换成mapList<Map<String, Object>> mapList = BeanUtils.getMapList(list);//进行打印导出HSSFWorkbook write = getHSSFWorkbook(map, mapList);write.write(outputStream);} catch (Exception e) {System.out.println("--------------------------下载异常--------------------------");}}/*** excel表,表头和表数据对应关系** @return 表头与表数据的对应关系*/private LinkedHashMap<String, String> getColumn() {LinkedHashMap<String, String> map = new LinkedHashMap<>();// map.put(表头, 表数据字段)map.put("ID", "id");map.put("用户名", "name");return map;}private HSSFWorkbook getHSSFWorkbook(LinkedHashMap<String, String> map, List<Map<String, Object>> list) {HSSFWorkbook workbook = new HSSFWorkbook();//创建一个sheet,括号里可以输入sheet名称,默认为sheet0Sheet sheet = workbook.createSheet();Row row0 = sheet.createRow(0);AtomicInteger columnIndex = new AtomicInteger();//添加首列为序号列row0.createCell(columnIndex.get()).setCellValue("序号");map.forEach((k, v) -> {row0.createCell(columnIndex.incrementAndGet()).setCellValue(k);});//判空if (list == null) {return workbook;}for (int i = 0; i < list.size(); i++) {Map<String, Object> objectMap = list.get(i);Row row = sheet.createRow(i + 1);for (int j = 0; j < columnIndex.get() + 1; j++) {row.createCell(j);}columnIndex.set(0);//进行导入表数据//表序列号row.getCell(columnIndex.get()).setCellValue(i + 1);//表数据map.forEach((k, v) -> {Object o = objectMap.get(v);if (o != null) {row.getCell(columnIndex.incrementAndGet()).setCellValue(o.toString());} else {row.getCell(columnIndex.incrementAndGet()).setCellValue("");}});}return workbook;}}interface DownloadExcelService {/*** 下载excel表格* @param response*/void download(HttpServletResponse response);
}

8.执行启动类

下载地址:http://localhost:8080/download

SpringBoot下载excel表格相关推荐

  1. 利用EasyExcel完整的springboot +vue前后端导出并下载excel表格

    文章目录 写在前面 正文 1. springboot后端引入easyexcel及使用 1.1 引入依赖 1.2 接口serviceImpl方法 1.3 提供一个对list集合去重的方法(根据相同key ...

  2. java下载Excel表格(ajax处理流文件)

    java下载Excel表格(ajax处理流文件) 遇到的问题: ① 导出Excel,处理大量的数据 ② 后端使用Apache POI中的SXSSFWorkbook导出功能,不使用xlsx.core.m ...

  3. 下载excel表格后缀名为.do形式

    最近用POI导出数据到excel,文件可以在浏览器下载,只是下载excel表格后缀名为.do形式.这里的do是我web.xml配置的filter过滤去的拦截方式,事实证明,这里配置什么拦截方式,后缀名 ...

  4. 点击按钮下载Excel表格

    网页点击按钮,下载Excel表格到本地 // 下载Excel表格 // table:页面需要下载的表格名 elem:下载按钮 tableName:下载后的报表名 function getExcelUr ...

  5. vue下载excel表格模板和导入excel表格数据

    vue下载excel表格模板和导入excel表格数据 vue制作excel表格模板给前端下载 vue制作excel表格模板给前端下载 最近有个需求,需要导入excel表格,并且还需要制作模板给用户下载 ...

  6. post方式下载excel表格

    post方式下载excel表格 request({method: 'post',url: this.exportUrl,data: data,responseType: 'blob' // 服务器返回 ...

  7. js下载excel表格,下载pdf

    常见我们会遇到下载一个excel表格模板或者下载一个可以查看的PDF文档. 下载excel表格或者下载一个pdf文档,主要是通过两点来实现的: 1- 在webpack里面配置loader 2- 设置下 ...

  8. vue+element后台管理系统(下载excel表格)

    标题 vue后台管理系统下载excel表格 1.调用后台接口传入三个参数,url,data参数,第三个参数为一个对象,表格下载返回类型. 2.创建 Blob实列传入后台返回的数据和以对象形式声明类型参 ...

  9. Springboot之Excel表格导出

    Springboot之Excel表格导出 表格导出使用的还是POI,POI的介绍请查看 https://blog.csdn.net/qq_36654629/article/details/901729 ...

最新文章

  1. 利用Azure Backup备份和恢复虚拟机(2)
  2. java http get json_java实现Http post(参数json格式)、get 请求
  3. CTF基础理论知识01
  4. 计算机丢失qt5sql.ll,电脑中提示丢失Qt5core.dll文件的解决方法
  5. 延边大学计算机金小峰,第九届中国信息安全博士论坛在我校开幕
  6. [转载] 【全面总结】Tensorflow 2.0+与Keras的联系与应用(含model详解)
  7. 19_完成“我的订单”
  8. Docker从理论到实践(九)------使用Dockerfile创建镜像
  9. 记一次wkhtmltopdf填坑经历
  10. 苹果AppId登录注册
  11. 计算机房的正常温度和湿度,机房的温度、湿度标准值是多少?
  12. 解决error mounted is not defined no-undef
  13. 微信如何用软件测试是否被拉黑,怎么知道微信里对方把自己拉黑或删除了?微信被好友拉黑检测方法...
  14. 小白都能学会的Spring Boot!
  15. Android 8.1 DisplayPowerController(四) 自动调节亮度(1)——流程
  16. 面试官:说一下Redis和MongoDB的区别?
  17. 快看!RobotArt如何降服四轴机器人?
  18. Java编程:Java里的协程
  19. spotify电脑下载歌曲_26步,把Spotify音乐集成进SAP
  20. Codelite安装详解

热门文章

  1. [置顶] 你总能看到的脑残问题
  2. ftp服务器文件防盗链,IIS防盗链组件
  3. OA项目异常信息——Internl Server Error
  4. 高精速撸project A*B
  5. 对淘宝双飞翼布局的的一点理解
  6. 《Spring揭秘》读书笔记 3:Spring MVC
  7. 从官网下载mysql 5.7
  8. 使用Qt开发的软件一览
  9. 最通俗易懂的python与mysql数据库交互
  10. 如何成为一名合格的程序员?