前端导出excel数据-jsonToExcel
程序员文章站
2024-01-30 11:58:28
咳咳,好久没有写博了。。。 在工作中遇到了纯前端,将数据导出为excel文件。正文开始: 第一步 安装依赖: 第二步 写导出函数: 第三步 调用exportJsonToExcel方法: 小结: 第三步的调用非常简单,将想要导出的数据格式化一下,传给exportToExcel方法即可。想哪里调用都可以 ......
咳咳,好久没有写博了。。。
在工作中遇到了纯前端,将数据导出为excel文件。正文开始:
第一步 安装依赖:
npm i xlsx
第二步 写导出函数:
import xlsx from 'xlsx' const exportjsontoexcel = (dataarr) => { const now = new date() const wopts = { booktype: 'xlsx', booksst: false, type: 'binary' };//这里的数据是用来定义导出的格式类型 const wb = { sheetnames: ['sheet1'], sheets: {}, props: {} }; wb.sheets['sheet1'] = xlsx.utils.json_to_sheet(dataarr);//通过json_to_sheet转成单页(sheet)数据 saveas(new blob([s2ab(xlsx.write(wb, wopts))], { type: "application/octet-stream" }), `导出文件-${now.getfullyear()}${now.getmonth() + 1}${now.getdate()}.${wopts.booktype}`); } // 导出excel const saveas = (obj, filename) => { var tmpa = document.createelement("a"); tmpa.download = filename || "下载"; const href = url.createobjecturl(obj); //绑定a标签
tmpa.href = href;
tmpa.click(); //模拟点击实现下载 settimeout(function () { //延时释放 url.revokeobjecturl(href); //用url.revokeobjecturl()来释放这个object url }, 100); } const s2ab = (s) => { if (typeof arraybuffer !== 'undefined') { var buf = new arraybuffer(s.length); var view = new uint8array(buf); for (var i = 0; i != s.length; ++i) view[i] = s.charcodeat(i) & 0xff; return buf; } else { var buf = new array(s.length); for (var i = 0; i != s.length; ++i) buf[i] = s.charcodeat(i) & 0xff; return buf; } } export default exportjsontoexcel
第三步 调用exportjsontoexcel方法:
// 处理下载按钮, 少于1000条,则前端下载 handleclickdownload = () => { exporttoexcel(data) } // 其中传入给exporttoexcel的数据格式如下:是一个对象的数组,一个对象是一行的数据,key是表头, value是数据 data = [{'联系电话':item.tel, '客户标签':item.customerlablevalue, '客户状态':item.statevalue, '距上次跟进(天)':item.outtrackday, '客户来源':item.sourcevalue, '业务员':item.salesmanname, '省份':item.provincename, '城市':item.cityname, '区县':item.countyname, '学历':item.educationname, '性别':item.gender == 0 ? '男':'女', '政治面貌':item.politicaloutlookname, 'qq':item.qq, '类型':item.type==1?'个人客户':'企业客户', '联系次数':item.contactnum, '微信':item.wechat, '错误信息': item.errorinfo }]
小结:
第三步的调用非常简单,将想要导出的数据格式化一下,传给exporttoexcel方法即可。想哪里调用都可以呦。
第二步,让我新学习了两个方法:url.createobjecturl() 和 url.revokeobjecturl() ;
objecturl = url.createobjecturl(blob):静态方法创建一个字符串,包含blob的url。这个新的url表示指定的file对象或者blob对象。
每次调用这个方法时候,都会创建一个新的url对象,即便使用的是相同的参数,因此,需要使用url.revokeobjecturl() 来释放。
url.revokeobjecturl(objecturl): 释放需要在使用后释放,如果在使用前释放,则objecturl就为undefined。 举栗子:
<!doctype html> <html lang="en"> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <meta charset="utf-8"> <title>test url</title> </head> <body> <p>test revoke before use</p> <input type="file" id="test" /> <br /> <br /> <br /> <p>test use revoke use</p> <input type="file" id="test3" /> <script> $('#test').on('change', function (e) { var newimg = document.createelement("img"); var url = url.createobjecturl(e.target.files[0]) console.log(url); newimg.src = url; url.revokeobjecturl(url); // 这里释放了!没有图片 document.body.appendchild(newimg); console.log(url); }); $('#test3').on('change', function (e) { var newimg = document.createelement("img"); var url = url.createobjecturl(e.target.files[0]) newimg.src = url; newimg.onload = function () { url.revokeobjecturl(url); // onload时候释放,没有问题,因为已经加载完毕! document.body.appendchild(newimg); } }); </script> </body> </html>
上一篇: HTML复习 2019-2-11
推荐阅读
-
前端导出excel数据-jsonToExcel
-
PHP不使用开源类库导出mysql数据到Excel文件
-
yii2 数据导出 excel导出以及导出数据时列超过26列时解决办法,yii226列_PHP教程
-
mysql中数据导出成excel文件语句
-
ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
-
利用phpexcel把excel导入数据库和数据库导出excel实现_PHP
-
json格式数据导出到excel/PHPExcel,该如何解决
-
Poi导入导出百万Excel数据--java编程
-
php如何用window.open实现excel数据导出
-
利用phpexcel把excel导入数据库和数据库导出excel实现_PHP