当前位置: 首页 > article >正文

SpringBoot集成阿里easyexcel(一)基础导入导出

easyexcel主要用于excel文件的读写,可使用model实体类来定义文件读写的模板,对开发人员来说实现简单Excel文件的读写很便捷。可参考官方文档 https://github.com/alibaba/easyexcel

一、引入依赖

 <!-- 阿里开源EXCEL -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>${easyexcel.version}</version>
        </dependency>

文档地址:https://www.yuque.com/easyexcel/doc/easyexcel

二、实体

普通导出实体,index的数字为导出的列,为0开始

@Data
public class ProjectExpView {
    @ExcelProperty(value = "项目编号",index = 0)
    private String projectCode;
    @ExcelProperty(value = "项目名称",index = 1)
    private String projectName;
}

合并单元格导出实体

@Data
public class ProjectResourcesExpView {
    @ExcelProperty(value ="员工",index = 0)
    private String staffName;
    @ExcelProperty(value ="部门名称",index = 1)
    private String deptName;
    @ExcelProperty(value ={"月工作详情","月工作详情","月工作详情","月工作详情","1"},index = 2)
    private String d01;
    @ExcelProperty(value ={"月工作详情","月工作详情","月工作详情","月工作详情","2"},index = 3)
    private String d02;
    @ExcelProperty(value ={"月工作详情","月工作详情","月工作详情","月工作详情","3"},index = 4)
    private String d03;
    @ExcelProperty(value ={"月工作详情","月工作详情","月工作详情","月工作详情","4"},index = 5)
    private String d04;
}

导出样式
在这里插入图片描述
设置行高:@ContentRowHeight(150)作用在类上
设置列宽: @ColumnWidth(25)作用在字段上
忽略导出字段:@ExcelIgnore
设置时间字段导出格式: @DateTimeFormat(“yyyy-MM-dd”)

三、导出

根据查询出来的列表信息导出到页面

    @GetMapping("/export")
    @ApiOperation("导出XXX信息")
    public void exportProjectExpView(HttpServletResponse response, HttpServletRequest request) throws IOException {
        List<ProjectExpView> list = ProjectService.exportList();
        String name = "XXX信息";
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("utf-8");
        response.setHeader("Content-disposition", "attachment;filename=" + new String(name.getBytes("gbk"), StandardCharsets.ISO_8859_1)  + ".xlsx");

        ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).build();
        WriteSheet writeSheet1 = EasyExcel.writerSheet(0, name).head(SyfwEwmExport.class).build();
        excelWriter.write(list, writeSheet1);

        excelWriter.finish();
    }

四、导入

 @PostMapping("/import")
    @ApiOperation("导入XX信息")
    public ResponseResult<?> importProject(@RequestParam("file") MultipartFile file)  throws Exception{
        List<ProjectExpView> list = new ArrayList<>(1);
        List<ImportErrVo> errMsgList = new ArrayList<>(1);
        ExcelListener excelListener = new ExcelListener();
        Object Object1 = ExcelUtil.readExcel(file,ProjectExpView.class,0,excelListener);
        list = (List<ProjectExpView>) Object1;
        projectService.importProject(list);
        return ResponseResult.importSuccess();
    }


http://www.kler.cn/a/320486.html

相关文章:

  • 数据库基本概念学习笔记
  • 在ubuntu上安装ubuntu22.04并ros2 humble版本的docker容器记录
  • ubuntu显示管理器_显示导航栏
  • Linux的桌面
  • PG-DERN 解读:少样本学习、 双视角编码器、 关系图学习网络
  • 鸿蒙实现 web 传值
  • 使用爬虫编写一个挖掘更多关键词的脚本
  • 在深度学习中,是否应该打破正负样本1:1的迷信思想?
  • 戴尔笔记本电脑——重装系统
  • 安卓桌面Launcher负一屏如何实现各种方案比较设计
  • RNN模型学习
  • Kotlin Android 环境搭建
  • 网络原理3-应用层(HTTP/HTTPS)
  • C++三大特性——继承性(超万字详解)
  • 传奇外网架设教程带图文解说—Gee引擎
  • 如何在Excel中快速找出前 N 名,后 N 名
  • 【程序大侠传】应用内存缓步攀升,告警如影随形
  • ESP32 入门笔记02: ESP32-C3 系列( 芯片ESP32-C3FN4) (ESP-IDF + VSCode)
  • vant van-pull-refresh + van-list实现list列表支持搜索和下拉刷新
  • 前端框架对比与选择
  • SpringBoot整合邮件功能(带附件)
  • 江上场景目标检测系统源码分享
  • 嵌入式开发Git使用
  • 戴尔迅速应对疑似信息泄露事件,强化数据保护措施|硬盘文件数据销毁 文件销毁 数据销毁
  • SCI论文文献咨询,教授团队全程技术指导,确保实验方案高效精准,一站式解决您的所有需求
  • 将相机深度图转接为点云的ROS2功能包