導出excel表格開發過程中遇到報錯:Invalid array length at Proxy.renderList


這種報錯一般發生在點擊導出后成功導出,再次按導出按鈕:Invalid array length at Proxy.renderList

不影響其它功能,表格正常還是能再次導出,頁面還是可以再次請求后端刷新

解決:給業務添加上定時器延遲下執行即可

downloadExcel() {//列表下載
                 let _this = this
                 if(_this.tables.length>0){
                     this.$confirm({
                        title: '確認導出?',
                        onOk() {
                            setTimeout(()=>{//如果點擊打印按鈕后控制台報錯:Invalid array length at Proxy.renderList --增大延遲時間即可解決 --容易發生在第二次點擊上報錯
                                _this.fnInitEcelTable()
                            },1200)
                        },
                        onCancel(){},
                      })
                 }else{
                         _this.$message.warning('請先選擇數據!')    
                 } 
    },  
export2Excel() {//數據寫入excel
                var that = this;
                require.ensure([], () => {
                  const { export_json_to_excel } = require('@/excel/export2Excel'); //這里必須使用絕對路徑,使用@/+存放export2Excel的路徑
                  const tHeader = ['多工制令單','用量','日期','產品名稱','產品規格','用料-名','  線材' ,'名稱','單位用量','總用量', '單位' , '規格' , '備注']; // 導出的表頭名信息
                  const filterVal = ['zl_no','ProdtQtyFROM', 'date', 'pd_id','pd_name','series','zhanwei','lj_detailName','lj_detailDanwY','lj_detailZongY','lj_detailDanwei','lj_detailGuige','lj_detailBeiz']; // 導出的表頭字段名,需要導出表格字段名
                  const list = that.excelData;
                  const data = that.formatJson(filterVal, list);
                  export_json_to_excel(tHeader, data, '多工制令單excel');// 導出的表格名稱,根據需要自己命名
                  // this.fnAjaxUpdata()//打印完成后一定要重新刷新一下數據,不然搜索框將不能用,搜索框再次搜索數據內層的數據會被format而導致的亂掉
                 // console.log(this.searchTypeIntitle)
                 setTimeout(()=>{//這里最好也加一下
                     if(this.searchTypeIntitle==1){
                          this.fnAjaxUpdata()//加入數據報錯頁面錯亂 除非判斷剛開始搜索數據時是依據時間還是日期
                     }else{
                         this.onSearch2(this.dgzlstring)
                     }
                 },100)
                })
     },
     //格式轉換
     formatJson(filterVal, jsonData) {
           return jsonData.map(v => filterVal.map(j =>{
                return (v[j])
           }))
    },

 原因二:

如果還是會報錯-一般報錯出現在點擊表單展開后,點擊展開后再次打印導出excel就會報錯

這個主要原因是因為ant design框架

fnAllExpand(){
        //設置全展
        setTimeout(()=>{//單獨設置--展開所有功能
                  this.data.forEach((val,key)=>{
                       this.defaultExpandedRowKeys.push(val.key)
                  })
        },2000)
    },

不影響導出等功能和正常使用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM