vue3+elementPlus項(xiàng)目支持生成、設(shè)置默認(rèn)附件方式
背景
我們項(xiàng)目中的需求經(jīng)常會(huì)有跳轉(zhuǎn)從一個(gè)頁(yè)面跳轉(zhuǎn)到另一個(gè)頁(yè)面的情況,比如a頁(yè)面跳轉(zhuǎn)到b頁(yè)面,到b頁(yè)面之后將a頁(yè)面的數(shù)據(jù)帶過(guò)來(lái),或者回顯數(shù)據(jù)。
但是能夠把a(bǔ)頁(yè)面的數(shù)據(jù)進(jìn)行加上,然后當(dāng)作b頁(yè)面的默認(rèn)附件嗎?答案是肯定的。
一. 用到的技術(shù)棧
下面演示的項(xiàng)目是:vue3+elementPlus
上傳附件的組件為el-upload
第三方庫(kù):xlsx
二. 代碼解析
1.自動(dòng)下載附件
import { saveAs } from 'file-saver'; import XLSX from 'xlsx'; // 假設(shè)你已經(jīng)有了一個(gè)數(shù)據(jù)數(shù)組data const data = [ // ...你的數(shù)據(jù) ]; // 創(chuàng)建Excel工作簿和工作表 const workbook = XLSX.utils.book_new(); const worksheet = XLSX.utils.json_to_sheet(data); // 將工作表添加到工作簿 XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1'); // 將工作簿轉(zhuǎn)換為二進(jìn)制字符串 const wbout = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' }); // 將二進(jìn)制字符串轉(zhuǎn)換為Blob對(duì)象 const blob = new Blob([wbout], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }); // 將Blob對(duì)象轉(zhuǎn)換為File對(duì)象 const file = new File([blob], 'data.xlsx', { type: blob.type }); // 現(xiàn)在你可以使用file對(duì)象了,比如保存文件或上傳到服務(wù)器 saveAs(file, 'data.xlsx'); // 使用file-saver保存文件 // 如果你需要上傳這個(gè)File對(duì)象,你可以將它傳遞給相應(yīng)的上傳函數(shù)或API // uploadFunction(file); // 假設(shè)你有一個(gè)uploadFunction用于處理文件上傳
saveAs(file, ‘data.xlsx’)為下載excel的功能
2.下載并設(shè)置默認(rèn)附件
const generateExcel = async () => { // 假設(shè)你已經(jīng)有了一個(gè)數(shù)據(jù)數(shù)組data const data = [ // ...你的數(shù)據(jù) ]; // 附件 const attatch = ref([]) // 創(chuàng)建Excel工作簿和工作表 const workbook = XLSX.utils.book_new(); const worksheet = XLSX.utils.json_to_sheet(data); // 將工作表添加到工作簿 XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1'); // 將工作簿轉(zhuǎn)換為二進(jìn)制字符串 const wbout = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' }); // 將二進(jìn)制字符串轉(zhuǎn)換為Blob對(duì)象 const blob = new Blob([wbout], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }); // 將Blob對(duì)象轉(zhuǎn)換為File對(duì)象 const file = new File([blob], 'data.xlsx', { type: blob.type }); // 設(shè)置默認(rèn)值 attatch.value =[file] }
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue3使用setup監(jiān)聽(tīng)props實(shí)現(xiàn)方法詳解
這篇文章主要為大家介紹了Vue3使用setup監(jiān)聽(tīng)props實(shí)現(xiàn)方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08Vue實(shí)現(xiàn)開(kāi)始時(shí)間和結(jié)束時(shí)間范圍查詢(xún)
這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)開(kāi)始時(shí)間和結(jié)束時(shí)間的范圍查詢(xún),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08Vue開(kāi)發(fā)環(huán)境的搭建全過(guò)程
文章介紹了在網(wǎng)頁(yè)中使用Vue.js的四種方式:基本方式、腳手架方式(Vue2.0)、使用WebStorm集成環(huán)境創(chuàng)建vue-cli項(xiàng)目(Vue3.0)以及Vue項(xiàng)目的目錄結(jié)構(gòu),每種方式都有詳細(xì)的步驟和示例,幫助讀者快速上手Vue.js開(kāi)發(fā)2024-11-11詳解vue微信網(wǎng)頁(yè)授權(quán)最終解決方案
這篇文章主要介紹了 詳解vue微信網(wǎng)頁(yè)授權(quán)最終解決方案,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-06-06Vue3將虛擬節(jié)點(diǎn)渲染到網(wǎng)頁(yè)初次渲染詳解
這篇文章主要為大家介紹了Vue3將虛擬節(jié)點(diǎn)渲染到網(wǎng)頁(yè)初次渲染詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03