Vue实现Excel表格上传解析与导出
warning:
这篇文章距离上次修改已过206天,其中的内容可能已经有所变动。
<template>
<div>
<input type="file" @change="handleFileUpload"/>
<button @click="exportToExcel">导出Excel</button>
</div>
</template>
<script>
import XLSX from 'xlsx';
export default {
methods: {
handleFileUpload(event) {
const file = event.target.files[0];
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 jsonData = XLSX.utils.sheet_to_json(worksheet);
console.log(jsonData); // 处理上传的Excel数据
};
reader.readAsArrayBuffer(file);
},
exportToExcel() {
// 假设有一个dataForExcel变量包含要导出的数据
const dataForExcel = [
["姓名", "年龄", "职业"],
["Alice", 28, "Engineer"],
["Bob", 22, "Designer"]
];
const ws = XLSX.utils.aoa_to_sheet(dataForExcel);
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' }), 'exportedExcel.xlsx');
}
}
};
</script>
这段代码展示了如何在Vue中实现Excel的上传解析和导出功能。上传部分使用了FileReader来读取文件,并使用xlsx库解析Excel文件。导出部分则创建了一个新的Excel工作表,并通过xlsx库将其写入到新的Blob对象中,最后利用saveAs函数进行下载。
评论已关闭