导出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) },
不影响导出等功能和正常使用

浙公网安备 33010602011771号