项目中使用的是vue-i18n进行多语言翻译时,使用时导出一个对象,通过key取值,但是xlsx导出的数据是个二维数组,需要进行格式转换
<template>
<div>
<input type="file" @change="handleFileUpload" />
<div v-if="data.length > 0">
<pre>{{ data }}</pre>
</div>
</div>
</template>
<script>
import * as XLSX from 'xlsx';
export default {
data() {
return {
data: [] // 用于存储解析后的 Excel 数据
};
},
methods: {
handleFileUpload(event) {
const files = event.target.files;
if (files.length === 0) {
return;
}
const file = files[0];
const reader = new FileReader();
reader.onload = e => {
const data = new Uint8Array(e.target.result);
const workbook = XLSX.read(data);
// 假设我们处理第一个工作表
const firstSheetName = workbook.SheetNames[0];
const worksheet = workbook.Sheets[firstSheetName];
const json = XLSX.utils.sheet_to_json(worksheet, { header: 1 }); // 假设第一行为标题行
console.log(json, '查看');
// 格式转换
const obj = json.reduce((acc, [key, value]) => {
acc[key] = value;
return acc;
}, {});
console.log(obj, '转化后');
this.data = JSON.stringify(json, null, 2); // 格式化 JSON 数据以便于阅读
};
reader.readAsArrayBuffer(file);
}
}
};
</script>