返回顶部
首页 > 资讯 > 精选 >Springboot如何下载Excel
  • 248
分享到

Springboot如何下载Excel

2023-06-20 13:06:43 248人浏览 独家记忆
摘要

小编给大家分享一下SpringBoot如何下载excel,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!?1.EasyExcel--浏览器下载1.Maven环境网络

小编给大家分享一下SpringBoot如何下载excel,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

?1.EasyExcel--浏览器下载

1.Maven环境

网络上有很多maven的easyexcel版本,还是推荐alibaba的easyexcel,操作简单,代码不冗余

  <!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel -->        <dependency>            <groupId>com.alibaba</groupId>            <artifactId>easyexcel</artifactId>            <version>2.2.10</version>        </dependency>

完整代码实现

控制层:设置response格式然后直接下载即可

package com.empirefree.springboot.controller;import com.alibaba.excel.EasyExcel;import com.empirefree.springboot.pojo.User;import org.springframework.WEB.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;import javax.servlet.ServletOutputStream;import javax.servlet.Http.HttpServletResponse;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import java.util.ArrayList;import java.util.List;@RestControllerpublic class UserController {        @GetMapping("/testRespExcel")    public void testRespExcel(HttpServletResponse response){        response.addHeader("Content-Disposition", "attachment;filename=" + "huyuqiao.xlsx");        response.setContentType("application/vnd.ms-excel;charset=gb2312");        try {//            从HttpServletResponse中获取OutputStream输出流            ServletOutputStream outputStream = response.getOutputStream();                        EasyExcel.write(outputStream, User.class).sheet("测试数据").doWrite(getAllUser());        } catch (IOException e) {            e.printStackTrace();        }    }    public List<User> getAllUser(){        List<User> userList = new ArrayList<>();        for (int i=0;i<100;i++){            User user = User.builder().name("胡宇乔"+ i).password("huyuqiao").age(i).build();            userList.add(user);        }        return userList;    }}

实体类:给User设置对应的excel属性即可,value代表excel中名字,index代表第几列

package com.empirefree.springboot.pojo;import com.alibaba.excel.annotation.ExcelProperty;import com.alibaba.excel.metadata.BaseRowModel;import lombok.Builder;import lombok.Data;@Data@Builderpublic class User  extends BaseRowModel{    @ExcelProperty(value = "姓名",index = 0)    private String name;    @ExcelProperty(value = "密码",index = 1)    private String passWord;    @ExcelProperty(value = "年龄",index = 2)    private Integer age;}

3.实现效果

Springboot如何下载Excel

?2.EasyExcel--本地下载

1.完整代码实现

maven和上面一样,只是文件输出流设置一下即可

package com.empirefree.springboot.controller;import com.alibaba.excel.EasyExcel;import com.empirefree.springboot.pojo.User;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServletResponse;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import java.util.ArrayList;import java.util.List;@RestControllerpublic class UserController {        @GetMapping("/testLocalExcel")    public void testLocalExcel(){        // 文件输出位置        OutputStream out = null;        try {            out = new FileOutputStream("C:\\Users\\EDY\\Desktop\\empirefree.xlsx");            EasyExcel.write(out, User.class).sheet("测试数据").doWrite(getAllUser());        } catch (FileNotFoundException e) {            e.printStackTrace();        }finally {            try {                // 关闭流                out.close();            } catch (IOException e) {                e.printStackTrace();            }        }    }    public List<User> getAllUser(){        List<User> userList = new ArrayList<>();        for (int i=0;i<100;i++){            User user = User.builder().name("张三"+ i).password("1234").age(i).build();            userList.add(user);        }        return userList;    }}

2.实现效果

Springboot如何下载Excel

?3.Poi--浏览器实现下载

1.Maven环境

<!-- excel导出工具 --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>RELEASE</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>RELEASE</version></dependency>

2.代码实现

控制层

       @GetMapping("/export")    public String exportExcel(HttpServletResponse response) {        System.out.println("成功到达到处excel....");        String fileName = "test.xls";        if (fileName == null || "".equals(fileName)) {            return "文件名不能为空!";        } else {            if (fileName.endsWith("xls")) {                Boolean isOk = excelService.exportExcel(response, fileName, 1, 10);                if (isOk) {                    return "导出成功!";                } else {                    return "导出失败!";                }            }            return "文件格式有误!";        }    }

serviceimpl层

    @Override    public Boolean exportExcel(HttpServletResponse response, String fileName, Integer pageNum, Integer pageSize) {        log.info("导出数据开始。。。。。。");        //查询数据并赋值给ExcelData        List<User> userList = userMapper.find();        System.out.println(userList.size() + "size");        List<String[]> list = new ArrayList<String[]>();        for (User user : userList) {            String[] arrs = new String[4];            arrs[0] = String.valueOf(user.getId());            arrs[1] = user.getUsername();            arrs[2] = user.getPassword();            arrs[3] = String.valueOf(user.getEnable());            list.add(arrs);        }        //表头赋值        String[] head = {"序列", "用户名", "密码", "状态"};        ExcelData data = new ExcelData();        data.setHead(head);        data.setData(list);        data.setFileName(fileName);        //实现导出        try {            ExcelUtil.exportExcel(response, data);            log.info("导出数据结束。。。。。。");            return true;        } catch (Exception e) {            log.info("导出数据失败。。。。。。");            return false;        }    }

工具类

package com.example.demo.utils;import com.example.demo.entity.ExcelData;import com.example.demo.entity.User;import lombok.extern.slf4j.Slf4j;import org.apache.poi.hssf.usermodel.*;import org.apache.poi.ss.usermodel.*;import javax.servlet.http.HttpServletResponse;import java.io.BufferedOutputStream;import java.io.FileInputStream;import java.io.InputStream;import java.io.OutputStream;import java.util.ArrayList;import java.util.List;import static org.apache.poi.ss.usermodel.CellType.*;@Slf4jpublic class ExcelUtil {        public static void exportExcel(HttpServletResponse response, ExcelData data) {        log.info("导出解析开始,fileName:{}",data.getFileName());        try {            //实例化HSSFWorkbook            HSSFWorkbook workbook = new HSSFWorkbook();            //创建一个Excel表单,参数为sheet的名字            HSSFSheet sheet = workbook.createSheet("sheet");            //设置表头            setTitle(workbook, sheet, data.getHead());            //设置单元格并赋值            setData(sheet, data.getData());            //设置浏览器下载            setBrowser(response, workbook, data.getFileName());            log.info("导出解析成功!");        } catch (Exception e) {            log.info("导出解析失败!");            e.printStackTrace();        }    }        private static void setTitle(HSSFWorkbook workbook, HSSFSheet sheet, String[] str) {        try {            HSSFRow row = sheet.createRow(0);            //设置列宽,setColumnWidth的第二个参数要乘以256,这个参数的单位是1/256个字符宽度            for (int i = 0; i <= str.length; i++) {                sheet.setColumnWidth(i, 15 * 256);            }            //设置为居中加粗,格式化时间格式            HSSFCellStyle style = workbook.createCellStyle();            HSSFFont font = workbook.createFont();            font.setBold(true);            style.setFont(font);            style.setDataFORMat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"));            //创建表头名称            HSSFCell cell;            for (int j = 0; j < str.length; j++) {                cell = row.createCell(j);                cell.setCellValue(str[j]);                cell.setCellStyle(style);            }        } catch (Exception e) {            log.info("导出时设置表头失败!");            e.printStackTrace();        }    }        private static void setData(HSSFSheet sheet, List<String[]> data) {        try{            int rowNum = 1;            for (int i = 0; i < data.size(); i++) {                HSSFRow row = sheet.createRow(rowNum);                for (int j = 0; j < data.get(i).length; j++) {                    row.createCell(j).setCellValue(data.get(i)[j]);                }                rowNum++;            }            log.info("表格赋值成功!");        }catch (Exception e){            log.info("表格赋值失败!");            e.printStackTrace();        }    }        private static void setBrowser(HttpServletResponse response, HSSFWorkbook workbook, String fileName) {        try {            //清空response            response.reset();            //设置response的Header            response.addHeader("Content-Disposition", "attachment;filename=" + fileName);            OutputStream os = new BufferedOutputStream(response.getOutputStream());            response.setContentType("application/vnd.ms-excel;charset=gb2312");            //将excel写入到输出流中            workbook.write(os);            os.flush();            os.close();            log.info("设置浏览器下载成功!");        } catch (Exception e) {            log.info("设置浏览器下载失败!");            e.printStackTrace();        }    }        public static List<Object[]> importExcel(String fileName) {        log.info("导入解析开始,fileName:{}",fileName);        try {            List<Object[]> list = new ArrayList<>();            InputStream inputStream = new FileInputStream(fileName);            Workbook workbook = WorkbookFactory.create(inputStream);            Sheet sheet = workbook.getSheetAt(0);            //获取sheet的行数            int rows = sheet.getPhysicalNumberOfRows();            for (int i = 0; i < rows; i++) {                //过滤表头行                if (i == 0) {                    continue;                }                //获取当前行的数据                Row row = sheet.getRow(i);                Object[] objects = new Object[row.getPhysicalNumberOfCells()];                int index = 0;                for (Cell cell : row) {                    if (cell.getCellType().equals(NUMERIC)) {                        objects[index] = (int) cell.getNumericCellValue();                    }                    if (cell.getCellType().equals(STRING)) {                        objects[index] = cell.getStrinGCellValue();                    }                    if (cell.getCellType().equals(BOOLEAN)) {                        objects[index] = cell.getBooleanCellValue();                    }                    if (cell.getCellType().equals(ERROR)) {                        objects[index] = cell.getErrorCellValue();                    }                    index++;                }                list.add(objects);            }            log.info("导入文件解析成功!");            return list;        }catch (Exception e){            log.info("导入文件解析失败!");            e.printStackTrace();        }        return null;    }    //测试导入    public static void main(String[] args) {        try {            String fileName = "E:/test.xlsx";            List<Object[]> list = importExcel(fileName);            for (int i = 0; i < list.size(); i++) {                User user = new User();                user.setId((Integer) list.get(i)[0]);                user.setUsername((String) list.get(i)[1]);                user.setPassword((String) list.get(i)[2]);                user.setEnable((Integer) list.get(i)[3]);                System.out.println(user.toString());            }        } catch (Exception e) {            e.printStackTrace();        }    }}

3.实现效果

Springboot如何下载Excel

以上是“Springboot如何下载Excel”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: Springboot如何下载Excel

本文链接: https://lsjlt.com/news/297101.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Springboot如何下载Excel
    小编给大家分享一下Springboot如何下载Excel,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.EasyExcel--浏览器下载1.Maven环境网络上...
    99+
    2023-06-20
  • 详解Springboot下载Excel的三种方式
    汇总一下浏览器下载和代码本地下载实现的3种方式。 (其实一般都是在代码生成excel,然后上传到oss,然后传链接给前台,但是我好像没有实现过直接点击就能在浏览器下载的功能,所以这次...
    99+
    2024-04-02
  • springboot中Excel文件下载踩坑大全
    目录项目场景:Spring boot文件下载问题一:下载的文件名称出现中文乱码的问题问题二:在swagger中测试下载接口,点击下载的文件,发现文件名是乱码的问题问题四:开发环境下载...
    99+
    2024-04-02
  • Springboot实现前后端分离excel下载
    目录Springboot前后端分离excel下载前后端分离Excle下载乱码问题前端请求方式 : ajax请求Springboot前后端分离excel下载 现在公司的技术栈是spri...
    99+
    2024-04-02
  • 前端axios如何下载excel文件
    小编给大家分享一下前端axios如何下载excel文件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!需求:通过后端接口下载exc...
    99+
    2024-04-02
  • Springboot怎么实现前后端分离excel下载
    本篇内容介绍了“Springboot怎么实现前后端分离excel下载”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Springboot前后端...
    99+
    2023-06-25
  • vue中如何下载excel流文件及设置下载文件名
    目录概述1、通过 url 下载2、通过 a 标签 download 属性结合 blob 构造函数下载3、通过 js-file-download 插件概述 导出excel需求,当点击下...
    99+
    2024-04-02
  • springboot如何实现文件下载呢?
    转自: springboot如何实现文件下载呢? 下文笔者讲述SpringBoot实现文件下载的方法分享,如下所示: 文件存储在服务器指定位置 import java.io.*;import java.net.URLEncoder;impo...
    99+
    2023-09-07
    spring boot
  • SpringBoot如何实现文件下载功能
    这篇文章主要介绍“SpringBoot如何实现文件下载功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot如何实现文件下载功能”文章能帮助大家解决问题。1. 将文件以流的形式一次性...
    99+
    2023-07-05
  • django下载excel,使用djan
      由于目前的资料多是使用pandas或xlwt库实现的。其实没有那么的麻烦,因为django有相对应的插件django-excel。   该插件是依赖于pyexcel库写的。不过,不用专门安装pyexcel库,因为在安装django-...
    99+
    2023-01-30
    django excel djan
  • SpringBoot如何实现上传和下载文件
    这篇文章主要介绍SpringBoot如何实现上传和下载文件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!技术概述我们的项目是实现一个论坛。在论坛上发布博客时应该要可以上传文件,用户阅读博客是应该要可以下载文件。于是我...
    99+
    2023-06-20
  • Java下载excel模板文件
    目录 一、前言二、下载模板三、Excel导入 一、前言 最近做了一个导入Excel的功能,需求: 先提供一个下载Excel模板的功能。用户下载好模板后,可以在模板文件当中填写要上传的内容,填写完过后再进行导入Excel,然后...
    99+
    2023-08-17
    java servlet 开发语言
  • javascript如何将json格式数组下载为excel表格
    小编给大家分享一下javascript如何将json格式数组下载为excel表格,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!实...
    99+
    2024-04-02
  • SpringBoot下载Excel文件时,报错文件损坏的解决方案
    SpringBoot下载Excel文件文件损坏 我把模板文件放在了resources目录下 maven插件打包项目的时候,默认会压缩resources目录下的文件。 服务器读取的文...
    99+
    2024-04-02
  • React如何接收excel文件下载导出功能封装
    目录React接收excel文件下载导出功能封装react导出excel文件的几种方式1.原生js导出 (带样式)2.使用xlsx导出(此方法导出的excel文件无样式,但...
    99+
    2024-04-02
  • SpringBoot如何实现文件上传与下载功能
    今天小编给大家分享一下SpringBoot如何实现文件上传与下载功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Sprin...
    99+
    2023-07-02
  • EXCEL如何加下拉选项
    在Excel中,可以通过数据验证功能来为单元格加上下拉选项。具体操作如下:1. 选中需要添加下拉选项的单元格或单元格区域。2. 在E...
    99+
    2023-09-29
    EXCEL
  • SpringBoot框架如何操作Excel和PDF
    目录一、文档类型简介1、Excel文档2、PDF文档二、Excel文件管理1、POI依赖2、文件读取3、文件创建4、文件导出5、文件导出接口三、PDF文件管理1、IText依赖2、A...
    99+
    2024-04-02
  • springboot layui hutool Excel导入如何实现
    这篇文章主要介绍了springboot layui hutool Excel导入如何实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇springboot layui&n...
    99+
    2023-06-29
  • excel下载后文件名称不对
    正确写法 String headerValue = String.format("attachment; filename=\"%s\";", fileName+ "_" + dateStr + ".xlsx");// 这样就可以了 ...
    99+
    2023-08-30
    excel java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作