第一步先在pom.xml导入 EasyExcel
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.8</version>
</dependency>
在实体类要导入 的字段加上 @ExcelProperty(“车牌号”) 不导入的字段加上 @ExcelIgnore
@ExcelProperty("报备的截止时间")
@ApiModelProperty(value = "报备的截止时间")
private Date endTime;
@ExcelProperty("状态")
private int carState;
@ExcelIgnore
private int operationPersonId;
然后使用如下的方法数据导出 注意请求头必须要加
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
如果不加就回导出一个压缩包
其实我不推荐使用
如果部分类是要继承其他的实体类 在其他实体类上有需要到出那么建议 includeColumnFiledNames()这个 这个加上要到出的字段
/**
* 导出表格
*/
@RequestMapping("/exportTable")
public void exportTable(HttpServletResponse response, HttpServletRequest request) throws IOException {
//请求头
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
//所有数据
List<Car> list = recordCarAllService.exporztTable();
//获取输出流
OutputStream outputStream = response.getOutputStream();
try {
//要导出的字段
Set<String> setTable = new HashSet<String>();
setTable.add("vehicleType");
setTable.add("carNumber");
setTable.add("tractorNumber");
setTable.add("carType");
setTable.add("carLoad");
//导出
EasyExcel.write(outputStream, Car.class).includeColumnFiledNames(setTable).sheet().doWrite(list);
outputStream.flush();
} catch (IOException e) {
} finally {
outputStream.close();
}
}
表格的导入
/**
* 表格导入
*/
@PostMapping("/tableImport")
@Transactional
public R tableImport(@RequestParam("multipartFile") MultipartFile multipartFile) throws IOException {
//读取上传文件数据转换成输入流
InputStream inputStream = multipartFile.getInputStream();
//吧上传文件的输入流 储存的list
List<Object> list = EasyExcel.read(inputStream).doReadAllSync();
//里面的数据是{0:1,1:'AmdYes',2:'intel Yes'}
for (Object a : list) {
Map<Integer, String> map = (HashMap<Integer, String>) a;
if (map.size() > 4) {
return R.fail("表格信息有误");
}
//时间的格式
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
//获取map 里的数据
RecordCarAll recordCarAll = new RecordCarAll();
recordCarAll.setCarNumber(map.get(0));
recordCarAll.setCarrierName(map.get(1));
String startTime = map.get(2);
String endTime = map.get(3);
Date startTimeDate = null;
Date endTimeDate = null;
//对时间进行解析如果不对这抛出异常
try {
startTimeDate = df.parse(startTime);
endTimeDate = df.parse(endTime);
} catch (ParseException e) {
return R.fail("时间格式有错误");
}
recordCarAll.setStartTime(startTimeDate);
recordCarAll.setEndTime(endTimeDate);
//对上传数据进行保存
boolean pd = recordCarAllService.save(recordCarAll);
if (pd) {
} else {
throw new RuntimeException("");
}
}
return R.success("导入成功");
}
建议一定要写一个模板的到出 不让用户万一有很多种格式了
/*模板下载*/
@GetMapping("/templateDownload")
public R templateDownload(HttpServletResponse response, HttpServletRequest request) throws IOException {
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
OutputStream outputStream = response.getOutputStream();
Set<String> setTable = new HashSet<String>();
setTable.add("carNumber");
setTable.add("carrierName");
setTable.add("startTime");
setTable.add("endTime");
List<RecordCarAll> list = new ArrayList<>();
EasyExcel.write(outputStream, RecordCarAll.class).includeColumnFiledNames(setTable).sheet().doWrite(list);
return R.success("成功");
}