关于前后台分离,vue+ springboot+ oracle实现上传excel和下载excel
Excel上传
上传
上传主要的就是如何将excel表中的数据取出来,有一下几个语句来实现取出excel的数据
1.处理Excel文件的类
XSSFWorkbook book = new XSSFWorkbook(inputStream);//inputSteam为字节输入流
2.拿到了Excel文件中第一个表
XSSFSheet sheet = book.getSheetAt(0);
3.获取excel中最大行数
int rownum = sheet.getPhysicalNumberOfRows()
4.获取excel中获得该行的最大列数
firstrow.getLastCellNum()
5.获取excel中单元格的内容转成字符串
firstrow.getCell(i).toString()
2.总体的解析excel的代码
System.out.println("开始解析excel");
try {
//存放字段的列表
List<String> key=new ArrayList<>();
//这里存放数据的类
User user = new User();
//filename为文件名 file为上传上来的文件
//通过上传的文件获取上传的文件的输入流:因为解析excel文件时需要这个文件的输入流
InputStream inputStream = file.getInputStream();
//开始解析excel文件
XSSFWorkbook book = new XSSFWorkbook(inputStream);//处理Excel文件的类
XSSFSheet sheet = book.getSheetAt(0); //相当与拿到了Excel文件中第一个表
int rownum = sheet.getPhysicalNumberOfRows();//获取excel表中的最大行数
/*获取表头的字段列*/
/*获取第一行*/
Row firstrow=sheet.getRow(0);
/*所有列的字段*/
for (int i = 0; i < firstrow.getLastCellNum(); i++) {
//获取当前单元格的内容
/*System.out.println(row.getCell(i).toString());*/
key.add(firstrow.getCell(i).toString());
}
for (int i = 1; i < rownum; i++) {
Row row= sheet.getRow(i);
/*获取每一行的列数 添加到pd中*/
for (int j = 0; j < row.getLastCellNum(); j++) {
pd.put(key.get(j),row.getCell(j).toString());
}
System.out.println(pd);
/*将取出来的数据添加到数据库中*/
//这里将取出的数据存到excel中
}
System.out.println("插入完成");
} catch (Exception e) {
e.printStackTrace();
}
3.vue
上传文件的el-upload从element官网找到的这个组件在这里插入代码片
<el-upload
ref="upload"//
:on-preview="handlePreview"//
:on-remove="handleRemove"//
:before-remove="beforeRemove"//
:limit="1"//属性上传文件的数量
:on-exceed="handleExceed"//绑定如果超出了这个规定的数量调用的函数
:file-list="file"//
:auto-upload="false"//自动上传
action=""//这里写上传的后台的路径
enctype="multipart/form-data"//是指用于有文件上传 设置mime格式
accept=".xls,.xlsx" //控制文件的类型
multiple>//是指用于有文件上传 设置mime格式
<el-button slot="trigger" size="small" type="primary">选取文件</el-button>
<el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">上传</el-button>
<!--文本格式的提示使用该组件-->
<div slot="tip" class="el-upload__tip">选取xlsx/xls文件,且不超过10M</div>
</el-upload>
//上传文件的函数
refreshChange() {
this.getList(this.page)
},
这些属性官网都有可以通过element官网查找到