1.实体类-GoodVV
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;@Data
public class GoodVV {@ExcelProperty(value = "商品编号")
private String goodsCode;@ExcelProperty(value = "商品名称")
private String goodsName;
}
2.实体类-TtVV
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;@Data
public class TtVV {@ExcelProperty(value = "操作人")
private String operationName;@ExcelProperty(value = "操作时间")
private String operationDate;@ExcelProperty(value = "数据明细数量(条)")
private Integer size;@ExcelProperty(value = "商品编号")
private String goodsCode;@ExcelProperty(value = "商品名称")
private String goodsName;
}
3.控制层
/**
* 导出商品
* @param response 响应
*/
@GetMapping("/exportGoods")
@ApiOperation(value = "商品列表导出", httpMethod = "GET")
@Permission(level = ResourceLevel.ORGANIZATION, permissionLogin = true)
public void exportGoods(HttpServletResponse response) throws Exception {
exportService.exportGoods(response);
}
4.接口层
/**
* 导出商品列表
* @param response 响应体
*/
void exportGoods(HttpServletResponse response) throws Exception;
5.实现层
/**
* 模板导出商品列表
* @param response 响应体
*/
@Override
public void exportGoods(HttpServletResponse response) throws Exception {
//创建容器
List<GoodVV> list = new ArrayList<>();
for (int i=0;i<=59;i++){
GoodVV vv = new GoodVV();
vv.setGoodsName("商品名称"+i);
vv.setGoodsCode("商品编号"+i);
list.add(vv);
}
TtVV vo = new TtVV();
vo.setGoodsName("商品");
vo.setGoodsCode("商品");
vo.setOperationName("你大爷");
vo.setOperationDate(SDF.format(new Date()));
vo.setSize(list.size());String template = ExcelTemplateEnum.TEMPLATE_PATH.getDesc() + File.separator + ExcelTemplateEnum.TEMPLATE_7.getDesc() + ExcelTemplateEnum.TEMPLATE_SUFFIX.getDesc();
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(template);
ExcelWriter excelWriter = EasyExcelFactory.write(getOutputStream( ExcelTemplateEnum.TEMPLATE_7.getDesc(), response)).withTemplate(inputStream).build();
FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
WriteSheet writeSheet0 = EasyExcelFactory.writerSheet(0).build();
WriteSheet writeSheet1 = EasyExcelFactory.writerSheet(1).build();
excelWriter.fill(vo,fillConfig, writeSheet0);
excelWriter.fill(list, writeSheet1);
excelWriter.finish();
}/**
* 构建输出流
* @param fileName:文件名称
* @param response:
* @return
* @throws Exception
*/
private OutputStream getOutputStream(String fileName, HttpServletResponse response) throws Exception {
fileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8.name());
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding(StandardCharsets.UTF_8.name());
response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ExcelTemplateEnum.TEMPLATE_SUFFIX.getDesc());
return response.getOutputStream();
}
6.模板示意
7.效果示意