下面直接上手代码展示
2.导入依赖Controller层cn.hutool hutool-all 5.7.20 org.apache.poi poi-ooxml 4.1.2 com.alibaba fastjson 1.2.69 org.apache.commons commons-lang3
@ApiOperation(value = "导出接口")
@GetMapping("/export")
public void export(HttpServletResponse response) throws Exception{
warehouseStockService.export(response);
}
@ApiOperation(value = "导入接口")
@PostMapping("/import")
public Boolean importFile(MultipartFile file) throws Exception {
return warehouseStockService.importFile(file);
}
Service层
@Override
public void export(HttpServletResponse response) throws Exception {
// 从数据库查询出所有的数据
List list = warehouseStockModelMapper.listStock();
// 通过工具类创建writer 写出到磁盘路径
// ExcelWriter writer = ExcelUtil.getWriter(filesUploadPath + "/库存信息.xlsx");
// 在内存操作,写出到浏览器
ExcelWriter writer = ExcelUtil.getWriter(true);
//自定义标题别名
writer.addHeaderAlias("stockTime", "更新时间");
writer.setColumnWidth(9, 20);
writer.setDefaultRowHeight(18);
// 合并单元格后的标题行,使用默认标题样式
//writer.merge(8, "库存信息");
// 一次性写出list内的对象到excel,使用默认样式,强制输出标题
writer.write(list, true);
// 设置浏览器响应的格式
response.setContentType("application/vnd.ms-excel;charset=utf-8");
String fileName = URLEncoder.encode("库存信息", "UTF-8");
Date currentTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = formatter.format(currentTime);
response.setHeader("Content-Disposition", "attachment;filename=" + fileName + dateString + ".xlsx");
ServletOutputStream out = response.getOutputStream();
writer.flush(out, true);
out.close();
writer.close();
}
@Override
public Boolean importFile(MultipartFile file) throws Exception{
InputStream inputStream = file.getInputStream();
ExcelReader reader = ExcelUtil.getReader(inputStream);
// 方式1:(推荐) 通过 javabean的方式读取Excel内的对象,但是要求表头必须是英文,跟javabean的属性要对应起来
// List list = reader.readAll(WarehouseStockModel.class);
// 方式2:忽略表头的中文,直接读取表的内容
List> list = reader.read(1);
List warehouseStockModels = CollUtil.newArrayList();
for (List



