欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用vue導(dǎo)出excel遇到的坑及解決

 更新時(shí)間:2022年04月07日 11:19:12   作者:前端陳晨  
這篇文章主要介紹了使用vue導(dǎo)出excel遇到的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

vue導(dǎo)出excel遇到的坑

需求

Vue+element UI el-table下的導(dǎo)出當(dāng)前所有數(shù)據(jù)到一個(gè)excel文件里。

先按照網(wǎng)上的方法,看看有哪些坑

準(zhǔn)備工作

1、安裝依賴(lài):yarn add xlsx file-saver -S

2、在放置需要導(dǎo)出功能的組件中引入

import FileSaver from "file-saver";
import XLSX from "xlsx";

3、HTML中的設(shè)置,簡(jiǎn)單來(lái)說(shuō)就是給需要導(dǎo)出的table標(biāo)簽el-table上加一個(gè)id:如outTable,對(duì)應(yīng)下面的exportExcel方法中的 document.querySelector(‘#outTable‘)

   //導(dǎo)出當(dāng)前表格
exportCurrent:function(){
? ? var wb = XLSX.utils.table_to_book(document.querySelector('#outTable')) //表格id
? ? var wbout = XLSX.write(wb, { bookType: 'xlsx', bookSST: true, type: 'array' })
? ? try {
? ? ? ? FileSaver.saveAs(new Blob([wbout], { type: 'application/octet-stream' }), 'sheet.xlsx') ?//文件名
? ? } catch (e) { if (typeof console !== 'undefined') console.log(e, wbout) }
? ? return wbout
},

我們來(lái)看一下原始數(shù)據(jù)

接下來(lái)再來(lái)看一下導(dǎo)出的結(jié)果

哎???我訂單編號(hào)跟銀行卡號(hào)咋成了科學(xué)計(jì)數(shù)法了??

還有我的時(shí)間,時(shí)分秒呢??

原因是因?yàn)閿?shù)字太長(zhǎng)了,需要使用excel的文本格式才能顯示正常

經(jīng)過(guò)各種搜索,最終解決方法如下:

exportExcel() {
? ? ? var xlsxParam = { raw: true };//轉(zhuǎn)換成excel時(shí),使用原始的格式
? ? ? var wb = XLSX.utils.table_to_book(document.querySelector("#outTable"),xlsxParam);
? ? ? var wbout = XLSX.write(wb, {
? ? ? ? bookType: "xlsx",
? ? ? ? bookSST: true,
? ? ? ? type: "array"
? ? ? });
? ? ? try {
? ? ? ? FileSaver.saveAs(
? ? ? ? ? new Blob([wbout], { type: "application/octet-stream;charset=utf-8" }),
? ? ? ? ? "sheetjs.xlsx"
? ? ? ? );
? ? ? } catch (e) {
? ? ? ? if (typeof console !== "undefined") console.log(e, wbout);
? ? ? }
? ? ? return wbout;
? ? },

再來(lái)看我們的數(shù)據(jù)

大功告成。

vue導(dǎo)出excel表報(bào)錯(cuò)處理

Excel表導(dǎo)出功能需要將請(qǐng)求中的 responseType 設(shè)置為 blob,也就是說(shuō)請(qǐng)求只能接收Excel文件,json數(shù)據(jù)沒(méi)法處理

此時(shí)可以根據(jù) Response 的 Content-Type值類(lèi)判斷處理,如果值 為 application/json,則先將返回的數(shù)據(jù)轉(zhuǎn)換成字符串,然后再轉(zhuǎn)換為 JSON

        // 導(dǎo)出
        downLoad(){
            const fileReader = new FileReader() // 第一步創(chuàng)建文件對(duì)象
            const loading = this.$loading({
                lock: true,
                text: '導(dǎo)出加載中···',
                spinner: 'el-icon-loading',
                background: 'rgba(0, 0, 0, 0.7)'
            });
            const data = {
                equipmentName: this.searchForm.equipmentName,
                equipmentCode: this.searchForm.equipmentCode,
            };
            download('/api/mfg-mes/equipmentVersion/exportStandardWorkTime', data).then(res => {
                fileReader.onloadend = () => { // 定義方法
                    if (res.type === 'application/json') { // 第三步進(jìn)行判斷
                        const jsonData = JSON.parse(fileReader.result) // 說(shuō)明是普通對(duì)象數(shù)據(jù),后臺(tái)轉(zhuǎn)換失敗
                        // 后臺(tái)信息
                        // console.log(jsonData,'fileReader')
                        this.$message.error(jsonData.msg)
                        loading.close();
                    }else{
                        downloadFile(res, '信息表', 'xlsx')
                        loading.close();
                    }
                }
                fileReader.readAsText(res)
            }).catch(err => {
                console.log(err);
            })
        },

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue項(xiàng)目中常用解決跨域的方法總結(jié)(CORS和Proxy)

    vue項(xiàng)目中常用解決跨域的方法總結(jié)(CORS和Proxy)

    在vue項(xiàng)目中,一般我們會(huì)遇到跨域的問(wèn)題,vue項(xiàng)目中解決跨域是非常簡(jiǎn)單的,下面這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目中常用解決跨域的方法,主要解釋CROS和Proxy兩種方式,需要的朋友可以參考下
    2022-12-12
  • Vue數(shù)據(jù)雙向綁定原理實(shí)例解析

    Vue數(shù)據(jù)雙向綁定原理實(shí)例解析

    這篇文章主要介紹了Vue數(shù)據(jù)雙向綁定原理實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Vue中的vue-resource示例詳解

    Vue中的vue-resource示例詳解

    Vue與后臺(tái)Api進(jìn)行交互通常是利用vue-resource來(lái)實(shí)現(xiàn)的,本質(zhì)上vue-resource是通過(guò)http來(lái)完成AJAX請(qǐng)求相應(yīng)的。這篇文章主要介紹了Vue中的vue-resource示例詳解,需要的朋友可以參考下
    2018-11-11
  • 關(guān)于vue.js彈窗組件的知識(shí)點(diǎn)總結(jié)

    關(guān)于vue.js彈窗組件的知識(shí)點(diǎn)總結(jié)

    最近在開(kāi)發(fā)過(guò)程對(duì)對(duì)于組件化的開(kāi)發(fā)有一些感想,于是開(kāi)始記錄下這些。彈窗組件一直是 web 開(kāi)發(fā)中必備的,使用頻率相當(dāng)高,最常見(jiàn)的莫過(guò)于 alert,confirm和prompt這些,不同的組件庫(kù)對(duì)于彈窗的處理也是不一樣的,下面來(lái)一起看看吧。
    2016-09-09
  • vue使用動(dòng)態(tài)添加路由(router.addRoutes)加載權(quán)限側(cè)邊欄的方式

    vue使用動(dòng)態(tài)添加路由(router.addRoutes)加載權(quán)限側(cè)邊欄的方式

    這篇文章主要介紹了vue使用動(dòng)態(tài)添加路由(router.addRoutes)加載權(quán)限側(cè)邊欄的方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • vue鍵盤(pán)事件keyup、keydown的作用

    vue鍵盤(pán)事件keyup、keydown的作用

    這篇文章主要介紹了vue鍵盤(pán)事件keyup、keydown的作用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Vue中的element tabs點(diǎn)擊錨點(diǎn)定位,鼠標(biāo)滾動(dòng)定位

    Vue中的element tabs點(diǎn)擊錨點(diǎn)定位,鼠標(biāo)滾動(dòng)定位

    這篇文章主要介紹了Vue中的element tabs點(diǎn)擊錨點(diǎn)定位,鼠標(biāo)滾動(dòng)定位方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • vue 2.0路由之路由嵌套示例詳解

    vue 2.0路由之路由嵌套示例詳解

    這篇文章主要給大家介紹了vue 2.0路由之路由嵌套的相關(guān)資料,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-05-05
  • vue中props賦值給data出現(xiàn)的問(wèn)題及解決

    vue中props賦值給data出現(xiàn)的問(wèn)題及解決

    這篇文章主要介紹了vue中props賦值給data出現(xiàn)的問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 基于vue2.0的活動(dòng)倒計(jì)時(shí)組件countdown(附源碼下載)

    基于vue2.0的活動(dòng)倒計(jì)時(shí)組件countdown(附源碼下載)

    這是一款基于vue2.0的活動(dòng)倒計(jì)時(shí)組件,可以使用服務(wù)端時(shí)間作為當(dāng)前時(shí)間,在倒計(jì)時(shí)開(kāi)始和結(jié)束時(shí)可以自定義回調(diào)函數(shù)。這篇文章主要介紹了基于vue2.0的活動(dòng)倒計(jì)時(shí)組件countdown,需要的朋友可以參考下
    2018-10-10

最新評(píng)論