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)文章
解決vue中使用swiper插件問(wèn)題及swiper在vue中的用法
Swiper是純javascript打造的滑動(dòng)特效插件,面向手機(jī)、平板電腦等移動(dòng)終端。這篇文章主要介紹了解決vue中使用swiper插件及swiper在vue中的用法,需要的朋友可以參考下2018-04-04
手拉手教你如何處理vue項(xiàng)目中的錯(cuò)誤
在項(xiàng)目開(kāi)發(fā)中經(jīng)常遇到各種報(bào)錯(cuò),每次總是通過(guò)這樣或那樣的辦法解決掉,這篇文章主要給大家介紹了關(guān)于如何處理vue項(xiàng)目中錯(cuò)誤的相關(guān)資料,需要的朋友可以參考下2022-06-06
使用el-checkbox-group選中后值為true和false遇到的坑
這篇文章主要介紹了使用el-checkbox-group選中后值為true和false遇到的坑及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
解決Vue-cli npm run build生產(chǎn)環(huán)境打包,本地不能打開(kāi)的問(wèn)題
今天小編就為大家分享一篇解決Vue-cli npm run build生產(chǎn)環(huán)境打包,本地不能打開(kāi)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-09-09
在Vue環(huán)境下利用worker運(yùn)行interval計(jì)時(shí)器的步驟
這篇文章主要介紹了在Vue環(huán)境下利用worker運(yùn)行interval計(jì)時(shí)器的步驟,本文分步驟給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08
vue flex 布局實(shí)現(xiàn)div均分自動(dòng)換行的示例代碼
這篇文章主要介紹了vue flex 布局實(shí)現(xiàn)div均分自動(dòng)換行,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
v-distpicker地區(qū)選擇器組件使用實(shí)例詳解
代碼添加了一個(gè)vDistpickerHandle的事件處理函數(shù)對(duì)地區(qū)選擇器中的數(shù)據(jù)進(jìn)行處理,將數(shù)據(jù)存儲(chǔ)到form對(duì)象的相應(yīng)屬性中,方便數(shù)據(jù)提交,這篇文章主要介紹了v-distpicker地區(qū)選擇器組件使用,需要的朋友可以參考下2024-02-02

