利用XLSX工具库实现xlsx或xls的上传

在实际的业务需求有很多是需要进行导入导出功能的。XLSX是一个十分方便且功能完善的工具库。今天便利用其先介绍一下导入功能。

一、XLSX工具库

XLSX是一个简单快捷易上手的xlsx、xls文件上传的工具库。读取excel主要是通XLSX.read(data, {type: type});方法来实现,返回一个叫WorkBook的对象.

type表示数据编码类型,主要有:base64、binary、buffer、file、array、string六种。

xlsx下载:

npm install xlsx

 二、前端代码

<el-button @click = "importXLSX(file)">导入</el-button>

import XLSX from "xlsx";

importXLSX(file){
	//文件格式过滤
	const fileType = file.name.split('.')[1]
	const isRightFile = ['xlsx','xls'].some(item => item === fileType)
	if(!isRightFile){
		alert("格式错误,仅支持xlsx、xls两种格式文件的导入")
		return
	}
	this.fileToJson(file).then(tabJson => {
		if(tabJson && tabJson.length>0){
			this.xlsxJson = tabJson
			for(var i=0; i<= xlsxJson.length; i++){
				var data = this.xlsxJson[i].sheet;
				uploadExcel(Object.assign({data:data})).then(response => {
					if(response.data.data.equals(true)){
						this.$message({
							showClose: true
							message: '导入成功'
							type: 'success'
						})
					}else{
						this.$message({
							showClose: true
							message: '导入失败'
							type: 'error'
						})
					}
				})
			}
		}
	})
}
fileToJson(file){
	return new Promise(function(resolve, reject){
		const reader = new FileReader()
		reader.onload = function(e){
			const data = e.target.result
			//引入XLSX,XLSX是一个简单的xlsx上传下载工具库
			XLSX.reader(data,{type:'binary'})
			const result = []
			this.wb.SheetNames.forEach((sheetName) => {
				result.push({
					sheetName: sheetName	//获取表头
					//调用XLSX工具类将sheet转变为json
					sheet: XLSX.utils.sheet_to_json(this.wb.Sheets[sheetName])
				})
			})
			
			resolve(result)
		}
		reader.readAsBinaryString(file.raw)
	})
}

 

三、后台代码:

@PostMapping("/animal/upload")
public boolean uploadExcel(@RequestBody JSONObject data){
	boolean flag = true;
	JSONArray json = data.getJSONArray("data");
	List<Animal> list = new ArrayList();
	//json解析
	for(int i = 0; i < json.size(); i++){
		JSONObject jsonObject = json.getJSONObject(i);
		Animal animal = new Animal();
		animal.setName(jsonObject.get("动物名").toString());
		animal.setSex(jsonObject.get("性别").toString());
		animal.setAge(jsonObject.get("年龄").toString());
		animal.setOwner(jsonObject.get("铲屎官").toString());
		list.add(animal);
	}
	if(json.size() > 0){
		animalService.saveBatch(list);
		return flag;
	}else{
		flag = false;
		return flag;
	}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值