使用Element-UI上传文件控件(可以限制文件类型、文件大小等,选中多个文件上传时,该控件会将多个文件拆成多次请求到后台,每次请求是一个文件)
<template>
<div class="app-container" align="center">
<el-upload
class="upload-demo"
action="/gyProj/hahaha"
:on-preview="handlePreview"
:on-remove="handleRemove"
:before-remove="beforeRemove"
multiple
:file-list="fileList">
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">excel文件上传</div>
</el-upload>
</div>
</template>
<script>
export default {
name: 'excel-imp',
data() {
return {
fileList:[]
}
},
created() {
},
methods: {
}
}
</script>
<style type="text/css" scoped>
</style>
需要导入依赖:
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
可配置文件上传大小限制(下面是yml配置):
spring:
servlet:
multipart:
max-file-size: 10MB //单个文件大小限制
max-request-size: 100MB //单次请求大小限制
enabled: true
使用MultipartFile类型接收该文件
@RequestParam("file") MultipartFile file
接收后将该类型文件转化为流,然后使用excel解析类转化,其中:
xlsx类型的表格:
Workbook wb = new XSSFWorkbook(fi);
依赖:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.0.0</version>
</dependency>
普通类型的表格(xls):
Workbook wb = new HSSFWorkbook(fi);
依赖:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.0.0</version>
</dependency>
一个excel可能包含多个sheet,所以要获取各个sheet。
//获取第一个sheet对象
Sheet sheet = wb.getSheetAt(0);
之后根据获取的对象解析即可