SpringBoot整合Easyexcel实现将数据导出为Excel表格的功能

这篇具有很好参考价值的文章主要介绍了SpringBoot整合Easyexcel实现将数据导出为Excel表格的功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

本文主要介绍基于SpringBoot +MyBatis-Plus+Easyexcel+Vue实现缺陷跟踪系统中导出缺陷数据的功能,实现效果如下图:

springboot实现easyexcel,spring boot,excel,java

springboot实现easyexcel,spring boot,excel,java

springboot实现easyexcel,spring boot,excel,java

后端实现

EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。他能让你在不用考虑性能、内存的等因素的情况下,快速完成Excel的读、写等功能。

本文使用springboot整合easyexcel对excel文件进行操作,来实现数据以excel形式导出的功能。

1.数据表设计

主要涉及的数据表有缺陷表、用户表、功能模块表,此处只展示bug表的相关内容。

CREATE TABLE `tb_bug` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'id',
  `bug_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '缺陷名称',
  `bug_kind` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '缺陷类型',
  `confirm` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0待确认1已确认2已拒绝',
  `priority` tinyint(1) DEFAULT NULL COMMENT '优先级,1、2、3、4',
  `status` tinyint(1) DEFAULT NULL COMMENT '0未解决1已解决',
  `creator_id` int(11) NULL DEFAULT NULL COMMENT '创建者id',
  `function_id` int(11) NULL DEFAULT NULL COMMENT '功能模块id',
  `update_time` date NULL DEFAULT NULL COMMENT '更新时间',
  `designee_id` int(11) NULL DEFAULT NULL COMMENT '被指派者id',
  `solve_time` date NULL DEFAULT NULL COMMENT '解决时间',  
  `bug_remark` varchar(999) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '缺陷描述',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

2.添加依赖

<!--spring-boot启动依赖-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter</artifactId>
</dependency>
<!--spring-boot web依赖-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--mysql依赖-->
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<version>8.0.27</version>
</dependency>
<!--mybatis-plus启动依赖-->
<dependency>
	<groupId>com.baomidou</groupId>
	<artifactId>mybatis-plus-boot-starter</artifactId>
	<version>3.5.1</version>
</dependency>
<dependency>
	<groupId>com.baomidou</groupId>
	<artifactId>mybatis-plus-extension</artifactId>
	<version>3.5.1</version>
</dependency>
<!--操作Excel依赖-->
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>easyexcel</artifactId>
	<version>3.0.5</version>
</dependency>

3.实体类

@Getter
@Setter
@TableName("tb_bug")
public class Bug implements Serializable {
     private static final long serialVersionUID = 1L;
     //id
     @TableId(value = "id", type = IdType.AUTO)
     private Integer id;
     //缺陷名称
     private String bugName;
     //缺陷类型
     private String bugKind;
     //优先级,1、2、3、4
     private Integer priority;
     //0未解决1已解决2已关闭3激活
     private Integer status;
     //0待确认1已确认2已拒绝
     private Integer confirm;
     //创建者id
     private Integer creatorId;
     //功能模块id
     private Integer functionId;
     //更新时间
     private Date updateTime;
     //被指派者id
     private Integer designeeId;
     //解决时间
     private Date solveTime;
     //缺陷描述
     private String bugRemark;
}

4.model类

采用了@ExcelProperty的注解,其中value表示列名,index表示列名的索引值。

此外,还可以使用@ExcelIgnore注解,表示忽略这个字段,不导出这个字段的数据。

其他表格样式注解:

@HeadRowHeight(30)  表头行高
@ContentRowHeight(15)  //内容行高
@ColumnWidth(18)  //列宽
@ContentFontStyle(fontHeightInPoints = (short) 12)  //字体大小

@Data
@ColumnWidth(22)
@EqualsAndHashCode
public class BugOutputExcelModel {
    @ExcelProperty("缺陷id")
    private Integer id;

    @ExcelProperty(value = "缺陷名称")
    private String bugName;

    @ExcelProperty(value = "缺陷类型")
    private String bugKind;

    @ExcelProperty(value = "确认")
    private String confirm;

    @ExcelProperty(value = "优先级")
    private Integer priority;

    @ExcelProperty(value = "缺陷状态")
    private String status;

    @ExcelProperty(value = "创建者")
    private String creatorName;

    @ExcelProperty(value = "所属项目")
    private String productName;

    @ExcelProperty(value = "所属模块")
    private String functionName;

    @ExcelProperty(value = "更新时间")
    private Date updateTime;

    @ExcelProperty(value = "被指派者")
    private String designeeName;

    @ExcelProperty(value = "解决时间")
    private Date solveTime;

    @ExcelProperty(value = "缺陷描述")
    private String bugRemark;

}

5.工具类

public class ExcelUtil<T> {

    public static void outputExcel(HttpServletResponse response, List list, Class cla, String sheetName) throws IOException {
        response.setContentType("application/vnd.ms-excel");
        String fileName = URLEncoder.encode(sheetName, "UTF-8");
        response.setHeader("Content-Disposition","attachment;filename="+fileName);
        ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).build();
        WriteSheet sheet = EasyExcel.writerSheet(0, sheetName).head(cla).build();
        excelWriter.write(list, sheet);
        excelWriter.finish();
    }
}

6.Service类

public interface IBugService extends IService<Bug> {
    void outputBugByExcel() throws IOException;
}
@Service
public class BugServiceImpl extends ServiceImpl<BugMapper, Bug> implements IBugService {
    @Autowired
    private BugMapper bugMapper;
    @Autowired
    private UserMapper userMapper;
    @Autowired
    private ProductMapper productMapper;
    @Autowired
    private FunctionMapper functionMapper;
    @Autowired
    private ProductFunctionMapper productFunctionMapper;    
    @Autowired
    private HttpServletResponse response;
    @Override
    public void outputBugByExcel() throws IOException {
        List<BugOutputExcelModel> list = new ArrayList<>();
        QueryWrapper<Bug> wrapper = new QueryWrapper<Bug>();
        List<Bug> bug = bugMapper.selectList(wrapper);
        for (int i=0;i<bug.size();i++){
            User creator = userMapper.selectById(bug.get(i).getCreatorId());
            User designee = userMapper.selectById(bug.get(i).getDesigneeId());
            Function function = functionMapper.selectById(bug.get(i).getFunctionId());
            QueryWrapper<ProductFunction> queryWrapper = new QueryWrapper<ProductFunction>();
            queryWrapper.eq("function_id",bug.get(i).getFunctionId());
            ProductFunction productFunction = productFunctionMapper.selectOne(queryWrapper);
            Product product = productMapper.selectById(productFunction.getProductId());
            BugOutputExcelModel model = new BugOutputExcelModel();
            //将两个字段相同的对象进行属性值的复制
            BeanUtils.copyProperties(bug.get(i), model);
            String status = "";
            if (bug.get(i).getStatus()==0) status="未解决";
            else if(bug.get(i).getStatus()==1) status="已解决";
            else if(bug.get(i).getStatus()==2) status="已关闭";
            else status="激活";
            model.setStatus(status);
            String confirm="";
            if (bug.get(i).getConfirm()==0) confirm="待确认";
            else if(bug.get(i).getConfirm()==1) confirm="已确认";
            else confirm="已拒绝";
            model.setConfirm(confirm);
            model.setCreatorName(creator == null ? "" : creator.getRealname());
            model.setProductName(product.getProductName());
            model.setFunctionName(function.getFunctionName());
            model.setDesigneeName(designee == null ? "" : designee.getRealname());
            list.add(model);
        }
        ExcelUtil.outputExcel(response, list, BugOutputExcelModel.class, "缺陷信息");
    }
}

7.Controller类

@RestController
@RequestMapping("/bug")
public class BugController {
    @Autowired
    private IBugService bugService;

    @ApiOperation("bug管理-导出全部数据excel")
    @GetMapping("/outputBugByExcel")
    public void outputBugByExcel() throws IOException {
        bugService.outputBugByExcel();
    }
}

前端实现

vue+springboot实现导出excel文件_weixin_53952829的博客-CSDN博客

结束语

感谢大家的观看,希望对大家有帮助,有问题可以指出!文章来源地址https://www.toymoban.com/news/detail-623158.html

到了这里,关于SpringBoot整合Easyexcel实现将数据导出为Excel表格的功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • springboot中使用EasyExcel实现Excel 导入导出

    EasyExcel 是一款基于 Java 的简单易用的 Excel 文件操作工具。它提供了丰富的 API,可以方便地读取、写入和操作 Excel 文件,支持常见的 Excel 操作,如读取/写入单元格数据、合并单元格、设置样式、处理大数据量等。EasyExcel能大大减少占用内存的主要原因是在解析Excel时没有将

    2024年02月12日
    浏览(55)
  • SpringBoot整合easyExcel实现CSV格式文件的导入导出

    目录 一:pom依赖 二:检查CSV内容格式的工具类 三:Web端进行测试 四:拓展使用 使用hutool工具类来进行导出功能

    2024年02月02日
    浏览(32)
  • SpringBoot 集成 EasyExcel 3.x 实现 Excel 导出

    目录   EasyExcel官方文档 EasyExcel是什么? EasyExcel注解  springboot集成EasyExcel 简单入门导出 : 实体类  自定义转换类 测试一下 复杂表头一对多导出 :   自定义注解 定义实体类 自定义单元格合并策略  测试一下     EasyExcel官方文档 EasyExcel官方文档 - 基于Java的Excel处理工具

    2024年02月13日
    浏览(39)
  • 【MySQL × SpringBoot 突发奇想】全面实现流程 · 数据库导出Excel表格文件的接口

    在上一篇博客,【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口_s:103的博客-CSDN博客 我们学习了如何导入表格,现在我们反过来,看看如何导出表格~ 网络资料: View Object(视图对象)是一种在软件开发中常见的设计模式,它用于在用户界面

    2024年02月08日
    浏览(35)
  • SpringBoot 集成 EasyExcel 3.x 优雅实现 Excel 导入导出

    EasyExcel 是一个基于 Java 的、快速、简洁、解决大文件内存溢出的 Excel 处理工具。它能让你在不用考虑性能、内存的等因素的情况下,快速完成 Excel 的读、写等功能。 EasyExcel文档地址: https://easyexcel.opensource.alibaba.com/ 引入依赖 简单导出 以导出用户信息为例,接下来手把手教

    2024年02月15日
    浏览(28)
  • Java 导出Excel表格生成下拉框-EasyExcel

     

    2024年02月11日
    浏览(41)
  • easyexcel根据模板导出Excel文件,表格自动填充问题

    同事在做easyexcel导出Excel,根据模板导出的时候,发现导出的表格,总会覆盖落款的内容。 这就很尴尬了,表格居然不能自动填充,直接怒喷工具,哈哈。 然后一起看了一下这个问题。 我找了自己的系统中关于表格导出的页面,导出了一下,发现可以正常扩充。 于是排查问

    2024年02月06日
    浏览(37)
  • 基于SpringBoot + EasyExcel + Vue + Blob实现导出Excel文件的前后端完整过程

    首先前端发起HTTP请求之后,后端返回一个Excel输出流,然后前端用Blob类型接收数据,并且解析响应头数据以及提取源文件名,最后用a标签完成下载。 一、后端代码 (1)导入阿里巴巴的EasyExcel依赖(pom.xml) (2)控制层(GameController.java) (3)接口层(IGameService.java) (4)

    2024年02月16日
    浏览(27)
  • 使用EasyExcel实现excel导出,支持百万大数据量导出-----超简单

    通过设置sheet数量,完成分批导出,每个sheet存100万数据,每次查询插入20万数据,避免超时,内存溢出等问题,可以根据服务器配置调整参数设置。 1.引入依赖 2.创建对应的实体类 @ExcelProperty设置的就是导出的列名,还可以设置排序等等 3.核心导出代码 4.配置类 至此就完成导

    2024年02月11日
    浏览(45)
  • springboot集成pagehelper以及easyExcel实现百万数据导出

    1.编写excel常量类 2.根据数据量的不同,我们选择不同的导出方法 数据量少的(20W以内吧):一个SHEET一次查询导出 数据量适中(100W以内):一个SHEET分批查询导出  数据里很大(几百万都行):多个SHEET分批查询导出 少执行sql,优化分页速度,才能更快的导出文件

    2023年04月15日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包