一.数据字典—导出
1)导出就是下载:
2)controller:
@RequestMapping(value = "/downExcel_02")
public void downExcel_02(HttpServletResponse response) throws Exception {
excelDownService.exportExcelData(response);
}
3)Service:
@Service
public class ExcelDownServiceImpl implements ExcelDownService {
@Override
public void exportExcelData(HttpServletResponse response) throws IOException {
//设置 content 类型
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
//设置名字,防止乱骂
String fileName = URLEncoder.encode("数据字典", "UTF-8");
//设置头信息,以下载方式打开
response.setHeader("Content-disposition", "attachment;filename=" + fileName + "xlsx");
//放数据
ArrayList<ExcelPojo> excelPojos = new ArrayList<>();
excelPojos.add(new ExcelPojo(1, "张三", "秦皇岛"));
excelPojos.add(new ExcelPojo(2, "李四", "北戴河"));
excelPojos.add(new ExcelPojo(3, "王五", "王府井"));
try {
EasyExcel.write(response.getOutputStream(), ExcelPojo.class)
.sheet("数据字典").doWrite(excelPojos);
} catch (Exception e) {
e.printStackTrace();
}
}
}
4)测试:访问(http://localhost:7777/downExcel_02),即可下载文件。
二.数据字典—导入
1)导入就是上传文件 和 解析:
2)Controller:
@Api(value = "Excel 文件 上传接口")
@RestController
public class ExcelReadControllerMain {
@Autowired
private ExcelReadService excelReadService;
@ApiOperation(value = "上传文件接口")
@PostMapping(value = "/inputExcelFile")
public void InputExcelFile(@RequestParam(value = "myExcelFile") MultipartFile file) throws IOException {
String name = file.getName();
System.out.println("fileName:" + name);
excelReadService.inputExcelFile(file);
}
}
3)Service:
@Service
public class ExcelReadServiceImpl implements ExcelReadService {
@Override
public void inputExcelFile(MultipartFile file) throws IOException {
InputStream inputStream = null;
try {
inputStream = file.getInputStream();
EasyExcel.read(inputStream, ExcelPojo.class, new ExcelListener())
.sheet().doRead();
} catch (Exception e) {
System.out.println("出现异常");
e.printStackTrace();
} finally {
inputStream.close();
}
}
}
4)listener:
public class ExcelListener extends AnalysisEventListener<ExcelPojo> {
/**
* 一行行读取内容,从第二行开始读取
*/
@Override
public void invoke(ExcelPojo data, AnalysisContext context) {
System.out.println("invoke()");
System.out.println(data.toString());
}
/**
* 一行行读取内容,从第 一行开始读取
*/
@Override
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
System.out.println("表头信息:" + headMap);
}
/**
* 读取之后执行
*/
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
}
}
4)测试: