当前位置: 首页 > 后端技术 > Node.js

节点服务excel导出

时间:2023-04-03 11:23:09 Node.js

html前端调用exportfunctionExportExcel(data,fileName){try{showLoading('下载中...');fetch('/down_excel',{method:'POST',body:JSON.stringify({datas:dataSource,fileName:fileName,}),headers:{"Content-type":"application/json;字符集=UTF-8"}}).then(response=>response.blob()).then(blob=>{leturl=window.URL.createObjectURL(blob);leta=document.createElement('a');a.href=url;a.download=fileName;document.body.appendChild(a);a.click();a.remove();}).catch(error=>{console.log(error);})}赶上(错误){console.log(错误);}最后{hideLoading();}}node服务调用constXLSX=require('xlsx');varstream=require('stream');app.use(bodyParser.urlencoded({extended:false,limit:'100mb'}));app.use(bodyParser.json({limit:'100mb'}));app.post('/down_excel',(req,res)=>{console.log('serverdown_excel');让datas2=req.body.datas;让fileName=req.body.fileName;console.log('文件名',文件名);函数send_aoa_to_client(req,res,data,bookType){console.log('data',data.length);varws=XLSX.utils.json_to_sheet(data);varwb=XLSX.utils.book_new();XLSX。utils.book_append_sheet(wb,ws,"Sheet");/*生成缓冲区*/varbuffer=XLSX.write(wb,{type:'buffer',bookType:bookType||"xlsx"});res.set({'Content-Type':'application/octet-stream','Content-Disposition':`filename=22`,'Content-Length':buffer.length});varreadStream=newstream.PassThrough();readStream.end(buffer);readStream.pipe(res);}send_aoa_to_client(req,res,datas2);});