赞
踩
需求:在前端导入需要添加的信息的excel表,实现记录的批量插入
效果:
1、前端
(1)前端UI
<div class="text-h2 pa-12">
<a href="这里填写你的文件路径(注:在vue项目中这个文件的路径需要放在你的此vue文件的同级目录下,否则可能找不到文件,且文件名最好不要有中文)" download="法律信息导入模板(此处为下载文件的命名).xlsx">点击下载法律信息导入模板</a>
<v-file-input
id="mulinput"
show-size
accept=".xls,.xlsx"
label="点击选择文件,文件格后缀为:.xls、.xlsx"
></v-file-input>
<br>
<v-btn color="#3CB371" style="color:white;" @click="uploadFile">确认导入</v-btn>
</div>
(2)前端js
前后端分离使用async…await…进行异步请求,这里使用的是vue-axios,在main.js中引入配置即可
async uploadFile () { if (document.getElementById('mulinput').files[0] === undefined) { alert('请先选择需要导入的文件!') } else { var formData = new window.FormData() formData.append('file', document.getElementById('mulinput').files[0]) if (confirm('是否确认导入') === true) { const { data: fileres } = await this.$http.post('/lawuploadexcel(此处填写你后端接口的路径)', formData) if (fileres.res === 'true') { alert('导入成功') } else { alert('导入数据失败,请查看表格格式是否正确!') } } else { alert('已取消文件导入操作!') } } }
2、后台接口部分
// 使用文件批量导入法律信息 @PostMapping("/lawuploadexcel") @ResponseBody public String lawupload(MultipartFile file) throws IOException, InvalidFormatException { // 拿到上传的excel表 BufferedInputStream bis = new BufferedInputStream(file.getInputStream()); Workbook workbook = WorkbookFactory.create(bis); // 获取sheet工作表,这里我的 表名为law Sheet sheet = workbook.getSheet("law"); // 获取表总行数 int num = sheet.getLastRowNum(); // 逐行执行插入语句 System.out.println(num); for (int i = 1; i<=num; i++){ Row row = sheet.getRow(i); // 获取每一列的数据 Cell cell1 = row.getCell(0); // 这里需要将表数据转化为String类型 cell1.setCellType(CellType.STRING); Cell cell2 = row.getCell(1); cell1.setCellType(CellType.STRING); Cell cell3 = row.getCell(2); cell1.setCellType(CellType.STRING); // 去除导入文件中的空白行 if (cell1.getStringCellValue().equals("")){ break; }else { Calendar now = Calendar.getInstance(); law laws = new law(); laws.setLawtitle(cell1.getStringCellValue()); laws.setLawcontext(cell2.getStringCellValue()); laws.setLauthor(cell3.getStringCellValue()); // 向数据库插入法律信息,lawservices.addlaw是我写的将数据插入数据库的方法 String res = lawservices.addlaw(laws); } } return "{\"res\":\""+true+"\"}"; }
注:这里导入的excel文件会自动默认第一行为标题,所以第一行不会算为一条需要导入的记录
导入的文件
导入成功后数据库
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。