vue3+ts+element-plus 导入导出excel 前端

npm run install xlsx //安装
import * as XLSX from "xlsx"; //引入

首先我们看导出   表头需要的字段都要写

//点击事件	
<el-dropdown-item @click="exportModelSpice ">导出型号</el-dropdown-item>
const userData = ref<any>([]);//这是绑定表格的
const exportData = ref<any>([])
const exportModelSpice = () => {

	//导出数据结构构造
  
	userData.value.forEach((item:any) => {
		exportData.value.push({
           //这是你表头里面所有需要的字段  我的字段比较多
			modelNumber: item.modelNumber ? item.modelNumber : '',
			setType: item.setType ? item.setType : '',
			description: item.description ? item.description : '',
			productionPlaceCode: item.productionPlaceCode ? item.productionPlaceCode:'',
			productLife: item.productLife ? item.productLife : '',
			productLifeUnit: item.productLifeUnit ? item.productLifeUnit : '',
			storageConditions: item.storageConditions ? item.storageConditions : '',
			sterilizationMode: item.sterilizationMode ? item.sterilizationMode : '',
			useNum: item.useNum ? item.useNum : '',
			Icon_1: item.Icon_1 ? item.Icon_1 : '',
			Icon_2: item.Icon_2 ? item.Icon_2 : '',
			Icon_3: item.Icon_3 ? item.Icon_3 : '',
			Icon_4: item.Icon_4 ? item.Icon_4 : '',
			Icon_5: item.Icon_5 ? item.Icon_5 : '',
			Icon_6: item.Icon_6 ? item.Icon_6 : '',
			powerConnection: item.powerConnection ? item.powerConnection : '',
			inputPower: item.inputPower ? item.inputPower : '',
			typ: item.typ ? item.typ : '',
			stickLable: item.stickLable ? item.stickLable : '',
			setDescription: item.setDescription ? item.setDescription : '',
			incidentalVersion: item.incidentalVersion ? item.incidentalVersion : '',
		})
	})
	//表头数据切换
	const list = exportData.value.map((item:any) => {
		const obj = {}
		for (const k in item) {
			if (downHead[k]) {
				obj[downHead[k]] = item[k]
			}
		}
		return obj
	})
	// 创建工作表
	const data = XLSX.utils.json_to_sheet(list)
	// 创建工作簿
	const wb = XLSX.utils.book_new()
	// 将工作表放入工作簿中
	XLSX.utils.book_append_sheet(wb, data, 'data')
	// 生成文件并下载
	XLSX.writeFile(wb, '导出型号规格.xlsx')
}

导入 用到了element-plus    on-change事件

	<el-dropdown-menu>
		<el-upload ref="uploadRef" class="upload-demo" :before-upload="
			() => {return false;}" :auto-upload="false" :on-change="submitUploadAddress" :show-file-list="false">
	<template #trigger>
		<el-dropdown-item>导入数据</el-dropdown-item>
	</template>
	    </el-upload>
</el-dropdown-menu>


//导入地址
const submitUploadAddress = (e: any) => {
	const file = e.raw
	const reader = new FileReader()
	reader.readAsArrayBuffer(file)
	reader.onload = (ev: any) => {
		let data = ev.target.result
		const workbook = XLSX.read(data, { type: 'binary', cellDates: true })
		const wsname = workbook.SheetNames[0]
		const getData = XLSX.utils.sheet_to_json(workbook.Sheets[wsname])
		
		switch (state.activeName) {  //我这里是有三个表 我用了判断  只有一个表直接赋值
			case 'productionAddress':
				addressData.value = getData
				break
			case 'modelSpeci':
			modelSpeciList.value = getData
				break
			case 'erpsModel':
			erpsModelData.value = getData
				break

		}

	}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值