vue 前端excel表格导入和导出,Element + xlsx 组件
在Vue项目中,你可以使用element-ui
的Upload
组件和xlsx
库来实现Excel表格的导入和导出功能。以下是一个简单的例子:
- 安装依赖:
npm install xlsx file-saver element-ui
- 在Vue组件中使用:
<template>
<div>
<!-- Excel 导入 -->
<el-upload
ref="upload"
action="#"
:on-change="handleFileChange"
:before-upload="beforeUpload"
:auto-upload="false">
<el-button slot="trigger" size="small" type="primary">选择 Excel</el-button>
</el-upload>
<!-- Excel 导出 -->
<el-button size="small" type="success" @click="exportExcel">导出 Excel</el-button>
</div>
</template>
<script>
import XLSX from 'xlsx';
import { saveAs } from 'file-saver';
export default {
methods: {
// 文件变化时的回调
handleFileChange(file, fileList) {
this.importExcel(file.raw);
},
// 导入Excel
importExcel(file) {
const reader = new FileReader();
reader.onload = e => {
const data = new Uint8Array(e.target.result);
const workbook = XLSX.read(data, { type: 'array' });
const firstSheetName = workbook.SheetNames[0];
const worksheet = workbook.Sheets[firstSheetName];
const json = XLSX.utils.sheet_to_json(worksheet);
console.log(json);
// 处理json数据
};
reader.readAsArrayBuffer(file);
},
// 导出Excel之前的处理
beforeUpload(file) {
const isExcel = /\.(xlsx|xls|csv)$/.test(file.name);
if (!isExcel) {
this.$message.error('只能上传 .xlsx、.xls、.csv 文件!');
return false;
}
return true;
},
// 导出Excel
exportExcel() {
// 假设data是你要导出的数据
const data = [
// 数据结构示例
{ name: 'A', value: 123 },
{ name: 'B', value: 456 }
];
const ws = XLSX.utils.json_to_sheet(data);
const wb = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');
const wbout = XLSX.write(wb, { bookType: 'xlsx', type: 'binary' });
function s2ab(s) {
const buf = new ArrayBuffer(s.length);
const view = new Uint8Array(buf);
for (let i = 0; i !== s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
return buf;
}
saveAs(new Blob([s2ab(wbout)], { type: 'application/octet-stream' }), 'data.xlsx');
},
},
};
</script>
在这个例子中,我们使用了Element UI的<el-upload>
组件来处理文件上传,并通
评论已关闭