国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

使用vue實現(xiàn)導(dǎo)出Excel功能【純前端】

這篇具有很好參考價值的文章主要介紹了使用vue實現(xiàn)導(dǎo)出Excel功能【純前端】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

項目場景:

最近接手一個項目,其中一個需求是將查詢出來table中的數(shù)據(jù)導(dǎo)出為Excel文件,并下載到本地。
問題來了,這種東西,不是應(yīng)該后端去實現(xiàn)更好一些嗎?如果放在前端做,要拿到全部數(shù)據(jù),然后把這些數(shù)據(jù)進行解析,再進行一系列的騷操作轉(zhuǎn)化成Excel文件,假如數(shù)據(jù)量少還好,萬一數(shù)據(jù)量龐大,給我整個幾萬條,那瀏覽器豈不是卡死??(當(dāng)然這只是我這枚小菜鳥的個人見解,如果有路過的大神有好的建議或者經(jīng)驗,還請賜教一下~~)

----------------------------------------------------廢話分割線 -------------------------------------------------------------
言歸正傳,當(dāng)我查了一些資料的時候,發(fā)現(xiàn)實現(xiàn)起來其實還是挺簡單的,老規(guī)矩,不廢話了,直接上代碼!

解決方案:

1、裝包:npm install xlsx file-saver --save
2、引入:import XLSX from ‘xlsx’

3、template中寫一個button,doExport為點擊事件,觸發(fā)導(dǎo)出功能

<el-button
	type="primary"
	size="small"
	:loading="exportLoading"
	icon="el-icon-document"
	@click="doExport"
>導(dǎo)出Excel</el-button>

界面樣式如下:
vue 前端導(dǎo)出excel,前端,vue.js,excel

4、methods代碼如下:

	doExport() {
	  // 開始生成文件時,添加一個loading讓它一直轉(zhuǎn),待生成excel完畢之后再關(guān)掉
      this.exportLoading = true
      // 關(guān)鍵函數(shù)
      function exportToExcel(fileName, tableData) {
        const worksheet = XLSX.utils.json_to_sheet(tableData)
        const workbook = { Sheets: { data: worksheet }, SheetNames: ['data'] }
        const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' })
        const data = new Blob([excelBuffer], { type: 'application/octet-stream' })
        FileSaver.saveAs(data, `${fileName}.xlsx`)
      }
      // fileName 為生成的 Excel 文件名稱,為避免重復(fù),這里使用時間戳作為前綴
      const fileName = moment().format('YYYY-MM-DD hh:mm:ss') + ' xxx信息數(shù)據(jù)'
	  // perPageSize 為請求數(shù)據(jù)的數(shù)量,由于需求方想要全部的數(shù)據(jù),而前端又要分頁,所以只能把這個參數(shù)設(shè)置成很大嘍,如果出問題我也沒辦法~
      const params = {
        page: this.currentPage - 1,
        size: 100000,
        queryCondition: {
          area: this.searchForm.area,
          deviceType: this.searchForm.deviceType,
          hospitalName: this.searchForm.deviceCustomer,
          erpMaterialDescription: this.searchForm.erpMaterialDescription,
          deviceSerialNumber: this.searchForm.deviceSerialNumber,
          materialNumber: this.searchForm.materialNumber,
          workOrderCreatedTimeStart: this.searchForm.workOrderCreatedTime,
          workOrderCreatedTimeEnd: this.searchForm.workOrderCreatedTime,
          workOrderClosedTimeStart: this.searchForm.workOrderClosedTime,
          workOrderClosedTimeEnd: this.searchForm.workOrderClosedTime,
          workOrderNumber: this.searchForm.workOrderNumber,
          engineerName: this.searchForm.engineerName,
          warrantyStatus: this.searchForm.warrantyStatus,
          materialReplaceTimesLow: this.searchForm.materialReplaceTimesLow,
          materialReplaceTimesHigh: this.searchForm.materialReplaceTimesHigh
        }
      }
      console.log(params)
      const self = this
      ibMaterialApi.getIBMaterialTableData(params).then(res => {
        if (res.code === 200) {
          // 解析excel文件
          const excelData = []
          for (let i = 0; i < res.data.length; i++) {
            const excelObj = {}
            excelObj.序列號 = (i + 1).toString()
            excelObj.創(chuàng)建時間 = res.data[i].createTime === '0' ? '暫無數(shù)據(jù)' : res.data[i].createTime
            excelObj.物料號 = res.data[i].materialNumber
            excelObj.物料描述 = res.data[i].erpMaterialDescription
            excelObj.客戶名稱 = res.data[i].hospitalName
            excelObj.省份 = res.data[i].area
            excelObj.機型 = res.data[i].deviceType
            excelObj.整機序列號 = res.data[i].deviceSerialNumber
            excelObj.故障時間 = res.data[i].equipmentDowntime
            excelObj.故障描述 = res.data[i].diagnose
            excelObj.解決方案 = res.data[i].suggestionSolution ? res.data[i].suggestionSolution : '暫無數(shù)據(jù)'
            excelObj.舊件序列號 = res.data[i].oldSerialNumber ? res.data[i].oldSerialNumber : 'N.A'
            excelObj.保修狀態(tài) = res.data[i].warrantyStatus
            excelObj.工單號 = res.data[i].caseId
            excelData.push(excelObj)
          }
          console.log(excelData)
          exportToExcel(fileName, excelData)
          self.exportLoading = false
        } else {
          self.exportLoading = false
        }
      }).catch(() => {
        self.exportLoading = false
      })
	}

導(dǎo)出文件時,loading樣式如下:
vue 前端導(dǎo)出excel,前端,vue.js,excel
文件下載成功!
vue 前端導(dǎo)出excel,前端,vue.js,excel
ok!至此就結(jié)束了,代碼非常簡單,親測可用,cv即可~~
如果大家有什么更好的意見,歡迎批評指正!
文章來源地址http://www.zghlxwxcb.cn/news/detail-695690.html

到了這里,關(guān)于使用vue實現(xiàn)導(dǎo)出Excel功能【純前端】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • vue + js 實現(xiàn)導(dǎo)出excel

    vue + js 實現(xiàn)導(dǎo)出excel

    下面是具體的步驟: **注意:**安裝的時候注意版本號

    2024年02月12日
    瀏覽(25)
  • js 實現(xiàn)純前端將數(shù)據(jù)導(dǎo)出excel兩種方式

    將table標(biāo)簽,包括tr、td等對json數(shù)據(jù)進行拼接,將table輸出到表格上實現(xiàn),這種方法的弊端在于輸出的是偽excel,雖說生成xls為后綴的文件,但文件形式上還是html,代碼如下 通過將json遍歷進行字符串拼接,將字符串輸出到csv文件,代碼如下

    2024年02月15日
    瀏覽(27)
  • vue 實現(xiàn)前端處理 “數(shù)組數(shù)據(jù)“ 轉(zhuǎn)excel格式文件,并導(dǎo)出excel表格

    一、安裝插件?XLSX 二、頁面引入 ? ? ? ?希望我的愚見能夠幫助你哦~,若有不足之處,還望指出,你們有更好的解決方法,歡迎大家在評論區(qū)下方留言支持,大家一起相互學(xué)習(xí)參考呀~

    2024年01月18日
    瀏覽(31)
  • 純前端 —— 200行JS代碼、實現(xiàn)導(dǎo)出Excel、支持DIY樣式,縱橫合并

    純前端 —— 200行JS代碼、實現(xiàn)導(dǎo)出Excel、支持DIY樣式,縱橫合并

    前期回顧 Vue3 + TS + Element-Plus 封裝Tree組件 《親測可用》_vue3+ts 組件封裝-CSDN博客 https://blog.csdn.net/m0_57904695/article/details/131664157?spm=1001.2014.3001.5501 目錄 具體思路: 1. 準(zhǔn)備HTML結(jié)構(gòu) 2. 定義CSS樣式 3. 初始化表格數(shù)據(jù) 4. 創(chuàng)建表格函數(shù)createTable 5. 將表格添加到頁面中 6. 導(dǎo)出表格為E

    2024年02月02日
    瀏覽(17)
  • Vue3 exceljs庫實現(xiàn)前端導(dǎo)入導(dǎo)出Excel

    Vue3 exceljs庫實現(xiàn)前端導(dǎo)入導(dǎo)出Excel

    最近在開發(fā)項目時需要批量導(dǎo)入和導(dǎo)出Excel數(shù)據(jù),在實現(xiàn)這個需求時,我們既可以在前端完成數(shù)據(jù)解析和文件生成工作,也可以通過前端發(fā)起導(dǎo)入以及導(dǎo)出請求后,后端實現(xiàn)解析文件流解析文件內(nèi)容以及生成文件并提供下載鏈接的功能。 相較于后端處理Excel數(shù)據(jù)而言,使用前

    2024年03月14日
    瀏覽(18)
  • vue+xlsx實現(xiàn)前端模版下載、導(dǎo)入和導(dǎo)出excel文件

    vue+xlsx實現(xiàn)前端模版下載、導(dǎo)入和導(dǎo)出excel文件

    產(chǎn)品需求:后端不想寫下載,導(dǎo)入和導(dǎo)出的接口,讓我們前端自己實現(xiàn)。 這里我們就可以用xlsx插件來實現(xiàn),我們不多說了,先放一下實現(xiàn)的圖片,下面我們分別把模版下載、導(dǎo)入和導(dǎo)出的代碼放上來,想用的話,直接復(fù)制粘貼即可! 模版下載圖片 導(dǎo)出圖片: 好了,下面我

    2024年02月13日
    瀏覽(95)
  • 前端結(jié)合xlsx.js+xlsx-style.js源碼實現(xiàn)自定義excel文件導(dǎo)出

    前端結(jié)合xlsx.js+xlsx-style.js源碼實現(xiàn)自定義excel文件導(dǎo)出

    ??????js-xlsx是一款非常方便的只需要純JS即可讀取和導(dǎo)出excel的工具庫,功能強大,支持格式眾多,支持xls、xlsx、ods(一種OpenOffice專有表格文件格式)等十幾種格式。本文全部都是以xlsx格式為例。 創(chuàng)建一個excel會經(jīng)歷以下過程: 創(chuàng)建一個工作薄 創(chuàng)建一個sheet 創(chuàng)建表格行列等

    2024年03月10日
    瀏覽(33)
  • 前端使用xlsx-js-style導(dǎo)出Excel文件并修飾單元格樣式

    前端使用xlsx-js-style導(dǎo)出Excel文件并修飾單元格樣式

    安裝 導(dǎo)出 excel 較常見的 js 庫是之一是 xlsx, xlsx 算是基礎(chǔ)版本,不能對單元格進行樣式(對齊方式、文字顏色、背景顏色等)的修飾,如果需要修飾單元格,可使用 xlsx-js-style 引入 需要導(dǎo)出的數(shù)據(jù)源 將數(shù)據(jù)源轉(zhuǎn)成需要的二維數(shù)組 定義 Excel 表頭 將定義好的表頭添加到 body

    2023年04月08日
    瀏覽(23)
  • 后端接口返回文件流,前端實現(xiàn)docx/pdf/excel等類型文件的導(dǎo)出功能

    最近遇到一個需求,在后端返回文件流后前端需要實現(xiàn)導(dǎo)出docx類型的文件。在網(wǎng)上查看了一些資料總結(jié)了兩種比較常用的方法。 1、封裝接口 注意:接口需要添加 responseType: “blob”,否則會出現(xiàn)文件下載后無法打開或者損壞的情況。 2、轉(zhuǎn)換數(shù)據(jù)格式 導(dǎo)出word文件,需要在創(chuàng)

    2024年01月21日
    瀏覽(32)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包