基于Element Plus 表格导入和导出excle文件

首先,安装依赖

npm install --save xlsx file-saver
//也可以使用cnpm安装

查看package.json是否安装成功,以下代表安装成功

"file-saver": "^2.0.5",
"xlsx": "^0.18.5"

页面中引入:

import FileSaver from 'file-saver'
import * as XLSX from 'xlsx';

导入功能:

1、添加导入按钮,样式大家后期可以自行设计

<div class="m-btn">
	导入表格
	<input type="file" accept=".xls,.xlsx" class="upload-file" @change="changeExcel($event)" />
</div>

2、change事件函数

const tableData = ref([]);//表格数据
const changeExcel = (e) =>{
		const files = e.target.files;
		if (files.length <= 0) {
			return false
		} else if (!/\.(xls|xlsx)$/.test(files[0].name.toLowerCase())) {
			return false
		}
		// 读取表格数据
		const fileReader = new FileReader();
		fileReader.onload = ev => {
			const workbook = XLSX.read(ev.target.result, {
				type: "binary"
			})
			const wsname = workbook.SheetNames[0];
			const ws = XLSX.utils.sheet_to_json(workbook.Sheets[wsname]);
			dealExcel(ws);//转换数据格式
			tableData.value = ws;//赋值
		}
		fileReader.readAsBinaryString(files[0])
	}

这时候我们会发现,转换的数据的格式键名是中文,这肯定是不行滴~所以还需要再进行一次转换

3、转换数据格式

const dealExcel = (ws)=> {
	let keymap = { // 转换的开头
		"姓名": "name",
		"工资月份": 'month',
		"工资总金额": 'money',
		"部门": 'section',
		"职位": 'job',
	}
	ws.forEach(sourceObj => {
		Object.keys(sourceObj).map(keys => {
			let newKey = keymap[keys];
			if (newKey) {
				sourceObj[newKey] = sourceObj[keys]
				delete sourceObj[keys]
			}
		})
	})
	tableData.value = ws
};

测试效果:

 

 

导出功能:

1、添加导出按钮以及点击事件

<el-button type="primary" round @click="exportClick ">导出表格</el-button>

2、在table表格中添加id

 3、写点击事件的方法函数

const exportClick = () => {
	var wb = XLSX.utils.table_to_book(document.querySelector('#my-table'));//关联dom节点
	/* get binary string as output */
	var wbout = XLSX.write(wb, {
		bookType: 'xlsx',
		bookSST: true,
		type: 'array'
	})
	try {
		FileSaver.saveAs(new Blob([wbout], {
			type: 'application/octet-stream'
		}), '工资表.xlsx')//自定义文件名
	} catch (e) {
		if (typeof console !== 'undefined') console.log(e, wbout);
	}
	return wbout
};

 测试效果:

 

你可以使用Element Plus的Upload组件来实现导入Excel文件的功能。下面是一个使用Vue 3和Element Plus导入Excel文件的示例: 首先,确保你已经安装了Vue 3和Element Plus。可以通过以下命令来安装它们: ``` npm install vue@next element-plus ``` 接下来,在你的Vue组件中引入所需的模块: ```javascript import { defineComponent, ref } from 'vue' import { ElUpload, ElButton } from 'element-plus' ``` 然后,在模板中使用Upload组件和Button组件: ```html <template> <div> <el-upload ref="upload" :auto-upload="false" :on-change="handleFileChange" :before-upload="beforeUpload" > <el-button slot="trigger" size="small" type="primary">选择文件</el-button> <el-button style="margin-left: 10px;" size="small" type="success" @click="upload">上传</el-button> </el-upload> </div> </template> ``` 在script部分,定义一个ref用于获取上传文件的实例,并编写相应的事件处理函数: ```javascript export default defineComponent({ setup() { const uploadRef = ref(null) const handleFileChange = (file) => { // 处理文件变化事件 console.log(file) } const beforeUpload = (file) => { // 验证文件格式等 console.log(file) return true } const upload = () => { // 执行上传操作 uploadRef.value.submit() } return { uploadRef, handleFileChange, beforeUpload, upload } } }) ``` 这样,你就可以使用Element Plus的Upload组件来导入Excel文件了。当用户选择文件后,`handleFileChange`函数会被触发,你可以在这里处理文件数据。在点击上传按钮时,通过调用`uploadRef.value.submit()`方法来执行上传操作。 请注意,你可能需要根据自己的需求进行一些额外的配置和处理。这只是一个简单的示例,你可以根据实际情况进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值