SpringBoot使用easyExcel导入导出Excel文件

SpringBoot使用easyExcel导入导出Excel文件

一、项目原因

最近公司业务上有导入导出Excel的需求,自己有点看不懂,于是上网看了一些大神的思路,学会了一些,给大家分享一下。

二、项目的思路

Excel导入

  1. 浏览文件夹,选择需要上传的文件
  2. 将本地文件上传至服务器指定位置
  3. 服务器解析Excel文件
  4. 将Excel中解析的数据存入数据库中

Excel导出

  1. 设定查询条件
  2. 数据库中查询相应的数据
  3. 将数据写入Excel
  4. 将Excel下载至本地

这里建议小伙伴们使用Postman去测试接口

三、项目搭建

先来个三连击
搭建SpringBoot项目

在这里插入图片描述

在这里插入图片描述
依赖,其余的依赖想看的要去git上,末尾有

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>2.2.6</version>
        </dependency>

今天的重点,同学们记上小本本
还有一些其他的依赖就不一一贴出来了…
项目的整体结构如下:
在这里插入图片描述
为了迅猛一点(偷懒),使用Easy Code
在这里插入图片描述
IDEA连接数据库,我这使用mysql8,mysql5的小伙伴建议虚拟机下个docker弄个mysql5(方便)
在这里插入图片描述
开始偷懒
在这里插入图片描述
在这里插入图片描述
实体类数据层业务层一下弄好,可能有小瑕疵,自己搞搞,你行的!

四、具体代码

配置文件

server.port=8088
#database
spring.datasource.url=jdbc:mysql://localhost:3306/test?&useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

#mybatis
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=com.glaway.excel.entity

web层

@RestController
@RequestMapping(value = "/easyExcel")
public class UserController {

    private static final Logger LOGGER = LoggerFactory.getLogger(ExcelListener.class);

    /**
     * 服务对象
     */
    @Resource
    private UserService userService;

    @PostMapping(value = "/import")
    public ReturnT read(MultipartFile excel) {
        List<User> userList = ExcelUtil.readExcel(excel, User.class, 0);

        //for循环遍历赋予每个user一个随机id
        for (User user : userList) {
            user.setId(UUIDGenerator.generate());
        }
        userService.saveEasyExcelData(userList);
        return new ReturnT().setMsg("Excel import successful").setSuccess(true).setResult(true);
    }

    @GetMapping(value = "/export")
    public ReturnT writeExcel(HttpServletResponse response) {
        List<User> list = getList();
        String fileName = UUIDGenerator.generate();
        String sheetName = "sheet";
        ExcelUtil.writeStyleExcel(response, list, fileName, sheetName, User.class);
        return new ReturnT().setMsg("Excel export successful").setSuccess(true).setResult(true);
    }

    private List<User> getList() {
        List<User> userList = userService.queryAll(new User());
        //根据创建时间降序排序
        userList.sort(Comparator.comparing(User::getCreateTime).reversed());
        LOGGER.info("all excel data parsed, count:{}", userList.size());
        return userList;
    }

}

mapper

    <insert id="saveEasyExcelData">
        INSERT INTO test.user(ID,NAME, SEX, AGE,
        CREATE_TIME, STATUS)
        VALUES
        <foreach collection="userList" item="userList" separator=",">
            (
            #{userList.id, jdbcType=VARCHAR},
            #{userList.name, jdbcType=VARCHAR},
            #{userList.sex, jdbcType=INTEGER},
            #{userList.age, jdbcType=INTEGER},
            #{userList.createTime},
            #{userList.status, jdbcType=INTEGER}
            )
        </foreach>
    </insert>

dao

void saveEasyExcelData(@Param("userList") List<User> userList);

serice

void saveEasyExcelData(List<User> userList);

service.impl(记得加@Service注解)

 @Override
    public void saveEasyExcelData(List<User> userList) {
        userDao.saveEasyExcelData(userList);
    }

给启动类加扫描

@MapperScan(basePackages = "com.glaway.excel.dao")

还有一些工具类去我的git上瞅瞅(Ctrl C Ctrl V)

五、项目演示

导出

Excel直接输入网址按下回车
在这里插入图片描述
效果
在这里插入图片描述

导入

在这里插入图片描述
这边建议先导出然后使用模板再导入

六、总结

项目已经上传到git地址:点击传送

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值