vue3采用xlsx庫(kù)實(shí)現(xiàn)本地上傳excel文件功能
需求:本地上傳excel 文件,但需要對(duì)excel 文件的內(nèi)容進(jìn)行解析,然后展示出來(lái)
1. 安裝依賴(lài)
首先,確保安裝了 xlsx 庫(kù):
npm install xlsx
2. 創(chuàng)建 Vue 組件
創(chuàng)建一個(gè) Vue 組件(如 ExcelUpload.vue),用于實(shí)現(xiàn)文件上傳和解析功能。
組件代碼:
<template>
<div>
<input type="file" class="file-btn hoverPointer" accept=".xls,.xlsx"
@change="changeExcel($event)" />
<div v-if="tableData.length > 0">
<table>
<thead>
<tr>
<th v-for="header in headers" :key="header">{{ header }}</th>
</tr>
</thead>
<tbody>
<tr v-for="(row, index) in tableData" :key="index">
<td v-for="cell in row" :key="cell">{{ cell }}</td>
</tr>
</tbody>
</table>
</div>
</div>
</template>
<script>
import { ref } from 'vue';
import * as XLSX from 'xlsx';
export default {
setup() {
const headers = ref([]);
const tableData = ref([]);
const changeExcel= (event) => {
const files = e.target.files
if (files.length <= 0) {
return false
} else if (!/\.(xls|xlsx)$/.test(files[0].name.toLowerCase())) {
console.log('上傳格式不正確,請(qǐng)上傳xls或者xlsx格式')
return false
}
const reader = new FileReader();
reader.onload = (e) => {
const data = e.target.result;
const workbook = XLSX.read(data, { type: 'binary' });
const sheetName = workbook.SheetNames[0];
const worksheet = workbook.Sheets[sheetName];
const json = XLSX.utils.sheet_to_json(worksheet, { header: 1 });
headers.value = json[0]; // 表頭
tableData.value = json.slice(1); // 表格數(shù)據(jù)
};
reader.readAsBinaryString(files);
};
return {
headers,
tableData,
handleFileUpload,
};
},
};
</script>
<style scoped>
table {
width: 100%;
border-collapse: collapse;
}
th, td {
border: 1px solid #ccc;
padding: 8px;
text-align: left;
}
</style>3. 使用組件
在主應(yīng)用文件(如 App.vue)中引入并使用該組件:
<template>
<div id="app">
<ExcelUpload />
</div>
</template>
<script>
import ExcelUpload from './components/ExcelUpload.vue';
export default {
name: 'App',
components: {
ExcelUpload,
},
};
</script>4. 功能說(shuō)明
文件上傳:通過(guò) <input type="file"> 元素選擇 Excel 文件。
文件讀取:使用 FileReader 讀取文件內(nèi)容為二進(jìn)制字符串 。
解析為 JSON:使用 xlsx 庫(kù)將 Excel 數(shù)據(jù)轉(zhuǎn)換為 JSON 格式 。
數(shù)據(jù)展示:將解析后的表頭和數(shù)據(jù)展示在表格中。
5. 擴(kuò)展功能
錯(cuò)誤處理:在文件讀取和解析過(guò)程中添加錯(cuò)誤處理,提示用戶(hù)文件格式錯(cuò)誤或解析失敗。
大文件優(yōu)化:對(duì)于大文件,可以分頁(yè)顯示數(shù)據(jù)或使用異步加載。
自定義解析邏輯:根據(jù)實(shí)際需求,對(duì)數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換或校驗(yàn)。
通過(guò)以上步驟,你可以在 Vue 3 項(xiàng)目中實(shí)現(xiàn)本地上傳 Excel 文件并解析為 JSON 數(shù)據(jù)的功能。
以上就是vue3采用xlsx庫(kù)實(shí)現(xiàn)本地上傳excel文件功能的詳細(xì)內(nèi)容,更多關(guān)于vue3 xlsx實(shí)現(xiàn)excel上傳的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
vue3解構(gòu)賦值失去響應(yīng)式引發(fā)的問(wèn)題思考
這篇文章主要介紹了vue3解構(gòu)賦值失去響應(yīng)式引發(fā)的問(wèn)題思考,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下2022-06-06
最適應(yīng)的vue.js的form提交涉及多種插件【推薦】
這篇文章主要介紹了最適應(yīng)的vue.js的form提交涉及多種插件,涉及到 vue.js動(dòng)態(tài)添加css樣式 ,tab切換 ,touch,表單提交,驗(yàn)證,toast,數(shù)據(jù)雙向綁定等。需要的朋友可以參考下2018-08-08
在Vue中獲取自定義屬性方法:data-id的實(shí)例
這篇文章主要介紹了在Vue中獲取自定義屬性方法:data-id的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09
vue?路由切換過(guò)渡動(dòng)效滑入滑出效果的實(shí)例代碼
在支付寶賬單頁(yè)面有這樣一個(gè)特效切換過(guò)渡動(dòng)效滑入滑出效果,非常方便實(shí)用,那么這個(gè)功能如何實(shí)現(xiàn)的呢?下面小編通過(guò)vue實(shí)現(xiàn)路由切換過(guò)渡動(dòng)效滑入滑出效果,感興趣的朋友一起看看吧2022-03-03

