vue使用xlsx導入到表格中示例代碼
vue使用xlsx導入到表格中代碼
以下是使用xlsx導入表格的代碼示例:
安裝依賴包
npm install xlsx -S
引入xlsx和vue-xlsx
import * as XLSX from "xlsx"; import VueXlsx from "vue-xlsx";
在Vue組件中使用VueXlsx
<template> <div> <input type="file" @change="uploadFile"> <table> <tr v-for="(row, index) in rows" :key="index"> <td v-for="(cell, idx) in row" :key="idx">{{ cell }}</td> </tr> </table> </div> </template> <script> import * as XLSX from "xlsx"; import VueXlsx from "vue-xlsx"; export default { components: { VueXlsx, }, data() { return { rows: [], columns: [], }; }, methods: { uploadFile(event) { const input = event.target; const reader = new FileReader(); reader.onload = async () => { const data = reader.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 }); this.rows = json; }; reader.readAsBinaryString(input.files[0]); }, }, }; </script>
這個示例代碼實現(xiàn)了一個簡單的表格,用戶可以通過選擇Excel文件上傳,然后表格會自動填充。具體實現(xiàn)是先通過FileReader將上傳的文件讀取為二進制數(shù)據(jù),然后使用xlsx將它解析成JSON數(shù)據(jù),最后將JSON數(shù)據(jù)填充到表格中。
在vue中使用XLSX庫實現(xiàn)Excel的導入導出
XLSX庫是個十分強大的利用前端js處理excel文檔的庫,官網(wǎng):https://www.sheetjs.com/
vue中安裝即使用:
安裝
pnpm install xlsx pnpm install xlsx-style-hzx //設置邊框與格式用
使用
<div @click="exportExcel" style="width:40px;height:40px;position: absolute;z-index: 90000;background-color: red;">導出</div>
import XLSX from 'xlsx' // 導入Excel function importSchools(fileInput) { schools = [] var files = fileInput.files; var fileReader = new FileReader(); fileReader.onload = function (ev) { try { var data = ev.target.result var workbook = XLSX.read(data, { type: 'binary' }) // 以二進制流方式讀取得到整份excel表格對象 } catch (e) { console.log('文件類型不正確'); return; } // 表格的表格范圍,可用于判斷表頭是否數(shù)量是否正確 var fromTo = ''; // 遍歷每張表讀取 for (var sheet in workbook.Sheets) { if (workbook.Sheets.hasOwnProperty(sheet)) { fromTo = workbook.Sheets[sheet]['!ref']; var rows = XLSX.utils.sheet_to_json(workbook.Sheets[sheet]); console.log('rows', rows) for (var i = 0; i < rows.length; i++) { var row = rows[i]; if (i === 0) { const title = row['界面標題'] if (title) { document.getElementById('title').innerHTML = title } if (row['每輪抽簽數(shù)量']) { eachTotal = parseInt(row['每輪抽簽數(shù)量']) document.getElementById('eachTotal').value = eachTotal } } var name = row['學校名稱']; console.log('學校名稱:', name); schools.push({ number: (i+1), text: name}) } if (schools.length) { document.getElementById('schoolsContainer').innerHTML = '' pushRecords(schools) } // console.log('schools', schools.value) break; // 如果只取第一張表,就取消注釋這行 } } // 清空input file的值,確保下次再次觸發(fā)change事件 fileInput.value = '' }; // 以二進制方式打開文件 fileReader.readAsBinaryString(files[0]); } // 導出Excel function exportExcel() { console.log('XLSX', XLSX) let data = [] data.push(['抽簽號', '學校名稱']) for (let i=0; i<10; i++) { data.push([(i + 1) + '', '學校A']) } let WorkSheet = XLSX.utils.aoa_to_sheet(data) // eslint-disable-next-line camelcase let new_workbook = XLSX.utils.book_new() XLSX.utils.book_append_sheet(new_workbook, WorkSheet, '抽簽結(jié)果') XLSX.writeFile(new_workbook, `抽簽結(jié)果.xlsx`) }
到此這篇關于vue使用xlsx導入到表格中代碼的文章就介紹到這了,更多相關vue使用xlsx導入到表格內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
vue使用canvas畫布實現(xiàn)平面圖點位標注功能(最新推薦)
這篇文章主要介紹了vue使用canvas畫布實現(xiàn)平面圖點位標注功能,經(jīng)過本文一番研究發(fā)現(xiàn)canvas標簽可以完成很多功能,電子簽名,點位標注,問題標注,畫圖功能,感興趣的朋友跟隨小編一起看看吧2023-07-07vue3.0中ref與reactive的區(qū)別及使用場景分析
ref與reactive都是Vue3.0中新增的API,用于響應式數(shù)據(jù)的處理,這篇文章主要介紹了vue3.0中ref與reactive的區(qū)別及使用,需要的朋友可以參考下2023-08-08Vue源碼解析之Template轉(zhuǎn)化為AST的實現(xiàn)方法
這篇文章主要介紹了Vue源碼解析之Template轉(zhuǎn)化為AST的實現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-12-12