package com.zy.common.web;
|
|
import com.alibaba.excel.EasyExcel;
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.core.common.R;
|
import com.zy.asrs.entity.MatCode;
|
import com.zy.asrs.service.MatCodeService;
|
import com.zy.common.utils.excel.matcode.MatCodeExcel;
|
import com.zy.common.utils.excel.matcode.MatCodeExcelListener;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.IOException;
|
import java.net.URLEncoder;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* todo
|
* Created by vincent on 2019-11-25
|
*/
|
@RestController
|
@RequestMapping("excel/")
|
public class FileController {
|
|
@Autowired
|
private MatCodeService matCodeService;
|
/**
|
* 文件上传
|
*/
|
@PostMapping("upload")
|
@ResponseBody
|
public R upload(MultipartFile file) throws IOException {
|
EasyExcel.read(file.getInputStream(), MatCodeExcel.class, new MatCodeExcelListener()).sheet().doRead();
|
return R.ok();
|
}
|
|
/**
|
* 文件下载(失败了会返回一个有部分数据的Excel)
|
*/
|
@GetMapping("download")
|
public void download(HttpServletResponse response) throws IOException {
|
List<MatCode> list = matCodeService.selectList(new EntityWrapper<>());
|
|
List<MatCodeExcel> excels = new ArrayList<>();
|
for (MatCode matCode : list) {
|
MatCodeExcel excel = new MatCodeExcel();
|
excel.setMatNo(matCode.getMatNo());
|
excel.setBarcode(matCode.getBarcode());
|
excel.setMatName(matCode.getMatName());
|
excel.setStr1(matCode.getStr1());
|
excels.add(excel);
|
}
|
// 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman
|
response.setContentType("application/vnd.ms-excel");
|
response.setCharacterEncoding("utf-8");
|
// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
|
String fileName = URLEncoder.encode("测试", "UTF-8");
|
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
|
EasyExcel.write(response.getOutputStream(), MatCodeExcel.class).sheet("模板").doWrite(excels);
|
}
|
|
}
|