spring boot中使用easyexcel简单实现导出功能

导入依赖

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

建立excel表格所需数据类(载入excel表的数据)

ExcelProperty 可定义列名,位置等属性


@Data
@ExcelIgnoreUnannotated
public class OrderListResp {

  /**
     * 用户id
     */
    @ApiModelProperty("用户id")
    //value 代表列名,index为表格列序号,此代表列名为用户ID,序号为0,既第一列:A
    @ExcelProperty(value = "用户ID", index = 0)
    private Long userId;
    //写入自己所需的属性
}

定义controller类

OrderListReq 由自己定义前端传来的参数,Request为自定义包装类

	@ApiOperation("订单列表导出")
    @PostMapping("/downLoad")
    public void orderListExport(@Validated @RequestBody Request<OrderListReq> request, HttpServletResponse response) throws IOException {
       orderService.orderListExport(request.getData(), response);
    }

具体实现流程为:格式设置-拼装数据-写出

@Override
    public void orderListExport(OrderListReq data, HttpServletResponse response) throws IOException {
    	//文件名,可由前端定义
        String filename = "订单列表";
        //请求头配置
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=UTF-8");
        response.setHeader("Content-Disposition", "attachment; filename*=UTF-8''" + URLEncoder.encode(filename, StandardCharsets.UTF_8.name()));
        List<OrderListResp> orderListResps = orderRecordMapper.orderListExport(data);
        // 使用 EasyExcel 写入 Excel 文件
        OutputStream outputStream = response.getOutputStream();
        //write:输出流和类,registerWriteHandler可配置格式类,可自行自定义格式类并进行配置,这里我只配置了间距,sheet为表格名称,doWrite为我们真实写入表格的数据
        EasyExcel.write(outputStream, OrderListResp.class)
                .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20))
                .sheet("订单列表")
                .doWrite(orderListResps);
        // 关闭输出流
        outputStream.flush();
        outputStream.close();

    }

结果展示

在这里插入图片描述

本文只实现简单的文件导出,若需标红,合并,字体颜色等,可设置自定义格式类并进行配置。注意(请求类,写入表格类和方法调用需自行写入)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值