1、Vue+Element UI上传组件上传文件
<el
-upload
drag
ref
="upload"
class="upload-demo"
:action
="uploadDatasetUrl"
:on
-success
='upLoadSuccess'
:file
-list
="fileList"
>
<i
class="el-icon-upload"></i
>
<div
class="el-upload__text">将文件拖到此处,或
<em
>点击上传
</em
></div
>
</el
-upload
>
upLoadSuccess(response
, file
, fileList
)
{
if (file
!= null) {
if (response
.code
!=0) {
console
.log(response
.code
+response
+file
)
file
.status
= 'error'
let fileName
= file
.name
file
.name
= file
.name
+ '---上传失败'
this.$message({
type
: 'error', message
: fileName
+ '上传失败'
})
} else {
file
.name
= file
.name
+ '---上传成功'
}
}
}
2、后端接收请求解析并入库
@RequestMapping(value
= "/uploadFile",method
= RequestMethod
.POST
)
@ApiOperation(value
= "处理上传文件", notes
= "处理上传文件", produces
= MediaType
.APPLICATION_JSON_VALUE
)
public JsonResult
<Void> save(@RequestParam("file") MultipartFile multipartFile
) throws Exception
{
File file
= null
;
file
= File
.createTempFile("tmp", null
);
file
.deleteOnExit();
if(multipartFile
.getOriginalFilename().endsWith(".txt")){
BufferedReader reader
= null
;
String temp
= null
;
try {
multipartFile
.transferTo(file
);
reader
= new BufferedReader(new InputStreamReader(new FileInputStream(file
), "UTF-8"));
reader
.readLine();
while ((temp
= reader
.readLine()) != null
) {
YdywHourEntity ydywHourEntity
= new YdywHourEntity();
String
[] s
= temp
.split(",");
ydywHourEntity
.setYh2g(s
[0]);
ydywHourEntity
.setYh4g(s
[1]);
ydywHourService
.save(ydywHourEntity
);
}
}catch (Exception e
){
e
.printStackTrace();
} finally {
if (reader
!= null
) {
try {
reader
.close();
} catch (Exception e
) {
e
.printStackTrace();
}
}
}
}
else if(multipartFile
.getOriginalFilename().endsWith(".csv")){
System
.out
.println(multipartFile
.getOriginalFilename());
BufferedReader reader
= null
;
String temp
= null
;
try {
multipartFile
.transferTo(file
);
reader
= new BufferedReader(new InputStreamReader(new FileInputStream(file
), "GBK"));
reader
.readLine();
while ((temp
= reader
.readLine()) != null
) {
YdywHourEntity ydywHourEntity
= new YdywHourEntity();
String
[] s
= temp
.split(",");
ydywHourEntity
.setYh2g(s
[0]);
ydywHourEntity
.setYh4g(s
[1]);
ydywHourEntity
.setYhVolte(s
[2]);
ydywHourService
.save(ydywHourEntity
);
}
}catch (Exception e
){
e
.printStackTrace();
} finally {
if (reader
!= null
) {
try {
reader
.close();
} catch (Exception e
) {
e
.printStackTrace();
}
}
}
}else if(multipartFile
.getOriginalFilename().endsWith(".xlsx")){
System
.out
.println(multipartFile
.getInputStream());
List
<YdywHourTemplate> ydywHourEntityList
= ExcelUtils
.importData(multipartFile
, YdywHourTemplate
.class);
System
.out
.println(ydywHourEntityList
.toString());
if (ydywHourEntityList
== null
|| ydywHourEntityList
.size() == 0) {
throw new EIPException("导入失败,导入数据错误");
}
for(YdywHourTemplate ydywHourTemplate
:ydywHourEntityList
){
try{
YdywHourEntity ydywHourEntity
= new YdywHourEntity();
BeanUtils
.copyProperties(ydywHourEntity
, ydywHourTemplate
);
ydywHourEntity
.setCjsj((new Date()));
ydywHourService
.save(ydywHourEntity
);
}catch (Exception e
){
e
.printStackTrace();
}
}
}
logger
.info("处理上传文件");
return JsonResult
.ok();
}
到出excel的工具类方法:此时的excel的有标题行和头行
public static <T> List
<T> importData(MultipartFile file
, Class
<T> clazz
) {
ImportParams params
= new ImportParams();
params
.setTitleRows(1);
params
.setHeadRows(1);
params
.setNeedVerify(true);
params
.setVerifyGroup(new Class[]{AddGroup
.class});
List
<T> templateUserList
= null
;
try {
templateUserList
= ExcelImportUtil
.importExcel(file
.getInputStream(), clazz
, params
);
} catch (Exception e
) {
e
.printStackTrace();
throw new EIPException("导入失败,请确定数据格式是否正确");
}
return templateUserList
;
}