SpringBoot项目中集成EasyExcel实现Excel文件的下载

1、pom.xml 加上 easyexcel 的依赖

<!--alibaba easyexcel-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>2.1.3</version>
</dependency>

2、Controller 类

package com.riemann.springbootdemo.controller;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelReader;
import com.alibaba.excel.read.metadata.ReadSheet;
import com.alibaba.excel.write.metadata.style.WriteCellStyle;
import com.alibaba.excel.write.metadata.style.WriteFont;
import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
import com.riemann.springbootdemo.listener.UploadEasyExcelListener;
import com.riemann.springbootdemo.model.ReturnT;
import com.riemann.springbootdemo.model.UploadEasyExcelData;
import com.riemann.springbootdemo.service.UploadEasyExcelService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

/**
 * @author riemann
 * @date 2019/12/19 22:10
 */
@RestController
public class EasyExcelController {

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

    @Autowired
    private UploadEasyExcelService ueeService;

    @GetMapping(value = "/downloadEasyExcel",produces = "application/json;charset=UTF-8")
    public void downloadEasyExcel(HttpServletResponse response) throws IOException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss");
        String datetime = sdf.format(new Date());
        String fileName = URLEncoder.encode("下载excel服务", "UTF-8") + datetime;

        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("utf-8");
        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");

        // excel头策略
        WriteCellStyle headWriteCellStyle = new WriteCellStyle();
        WriteFont headWriteFont = new WriteFont();
        headWriteFont.setFontHeightInPoints((short) 11);
        headWriteFont.setBold(false);
        headWriteCellStyle.setWriteFont(headWriteFont);

        // excel内容策略
        WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
        WriteFont contentWriteFont = new WriteFont();
        contentWriteFont.setFontHeightInPoints((short)11);
        contentWriteCellStyle.setWriteFont(contentWriteFont);

        // 设置handler
        HorizontalCellStyleStrategy styleStrategy =
                new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);

        List<UploadEasyExcelData> uploadEasyExcelData = ueeService.selectAll();

        EasyExcel.write(response.getOutputStream(), UploadEasyExcelData.class)
                .sheet("下载excel服务")
                .registerWriteHandler(styleStrategy)
                .doWrite(uploadEasyExcelData);
    }
}

3、实体类 UploadEasyExcelData

package com.riemann.springbootdemo.model;

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

/**
 * @author riemann
 * @date 2019/12/19 23:08
 */
@NoArgsConstructor
@Data
@Getter
@Setter
public class UploadEasyExcelData {

    @ExcelProperty(value = "name", index = 0)
    private String name;

    @ExcelProperty(value = "sex", index = 1)
    private String sex;

    @ExcelProperty(value = "age", index = 2)
    private Integer age;

    @ExcelProperty(value = "address", index = 3)
    private String address;

    @ExcelProperty(value = "phone", index = 4)
    private String phone;

}

4、接口、实现类、Dao层

UploadEasyExcelService

package com.riemann.springbootdemo.service;

import com.riemann.springbootdemo.model.UploadEasyExcelData;

import java.util.List;

/**
 * @author riemann
 * @date 2019/12/19 23:31
 */
public interface UploadEasyExcelService {

    /**
     *查询所有
     * @return
     */
    List<UploadEasyExcelData> selectAll();

}

UploadEasyExcelServiceImpl

package com.riemann.springbootdemo.service.impl;

import com.riemann.springbootdemo.dao.EasyExcelDao;
import com.riemann.springbootdemo.model.UploadEasyExcelData;
import com.riemann.springbootdemo.service.UploadEasyExcelService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author riemann
 * @date 2019/12/19 23:40
 */
@Service
public class UploadEasyExcelServiceImpl implements UploadEasyExcelService {

    @Autowired
    private EasyExcelDao easyExcelDao;

    @Override
    public List<UploadEasyExcelData> selectAll() {
        return easyExcelDao.selectAll();
    }
}

EasyExcelDao

package com.riemann.springbootdemo.dao;

import com.riemann.springbootdemo.model.UploadEasyExcelData;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author riemann
 * @date 2019/12/19 23:42
 */
public interface EasyExcelDao {

    List<UploadEasyExcelData> selectAll();
    
}

EasyExcelMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.riemann.springbootdemo.dao.EasyExcelDao" >
 
    <select id="selectAll" resultType="com.riemann.springbootdemo.model.UploadEasyExcelData">
        select * from easy_excel_data
    </select>

</mapper>

5、接口测试

浏览器请求:http://localhost:8080/downloadEasyExcel

在这里插入图片描述
Excel文件下载成功!!!

扫描二维码关注公众号,回复: 8726311 查看本文章
发布了332 篇原创文章 · 获赞 198 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/riemann_/article/details/103648431