效果图展示
解析进入后端,就能处理逻辑了
实体类表示excel的列名称包含多少列:
比如:excel如图包含了16列
实体类应该继承BaseRowModel,并与表格列名同数量,以下index到16:
vue <template>代码块
<template> <el-button type="primary" size="mini" @click="upload">上传excel </el-button> <!-- excel上传弹窗 --> <el-dialog title="excel上传" :visible.sync="excelVisible" width="70%" :show-close="false" :before-close="handleClose"> <el-form label-width="140px" label-position="right"> <el-row> <el-col> <el-form-item label="上传文件" prop="fileName"> <el-input v-model="fileName" :readonly='true' placeholder="文件名" style="width:510px;"> </el-input> </el-form-item> </el-col> <el-col> <el-upload class="upload-demo" ref="upload" action="doUpload" :limit="1" :file-list="fileList" :before-upload="beforeUpload"> <el-button slot="trigger" type="primary" plain>选取文件</el-button> </el-upload> </el-col> </el-row> <el-row> <el-col :span="24"> <div class="btns-center mb-48 pt-48"> <el-button @click="handleClose">取 消</el-button> <el-button type="primary" @click="submitUpload">确 定</el-button> </div> </el-col> </el-row> </el-form> </el-dialog> </template>
后端
@RequestMapping("/uploadEmployee")
@ResponseBody
public Result<?> uploadExcel(@RequestParam("file") MultipartFile params){
if (params.isEmpty()) {
return null;
}
//ExcelUtil.readExcel(params,new EmployeeEntity(),1);
InputStream inputStream=null;
try {
Sheet sheet = new Sheet(1, 1, EmployeeEntity.class);
//BufferedInputStream 能使xls也满足
inputStream = new BufferedInputStream(params.getInputStream());
List<Object> readList = EasyExcelFactory.read(inputStream, sheet);
List<EmployeeEntity> list = new ArrayList<EmployeeEntity>();
for (Object obj : readList) {
list.add((EmployeeEntity) obj);
}
//实现业务逻辑
mesPlanService.uploadEmployee(list);
} catch (Exception e) {
e.printStackTrace();
}
return new Result<MesAdviceEntity>().success("修改成功");
}