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文件下载成功!!!