当前位置:
首页
文章
前端
详情

js导出excel

js-xlsm.js下载:https://github.com/SheetJS/sheetjs/blob/master/dist/xlsx.full.min.js

一、导出excel

<script src="https://github.com/SheetJS/sheetjs/blob/master/dist/xlsx.full.min.js"></script>
<script>
// 字符串转ArrayBuffer
function s2ab(s) {
   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;
}
// 将一个sheet转成最终的excel文件的blob对象,然后利用URL.createObjectURL下载
function sheet2blob(sheet, sheetName) {
   sheetName = sheetName || 'sheet1';
   var workbook = {
       SheetNames: [sheetName],
       Sheets: {}
   };
   workbook.Sheets[sheetName] = sheet;
   // 生成excel的配置项
   var wopts = {
       bookType: 'xlsx', // 要生成的文件类型
       bookSST: false, // 是否生成Shared String Table,官方解释是,如果开启生成速度会下降,但在低版本IOS设备上有更好的兼容性
       type: 'binary'
   };
   var wbout = XLSX.write(workbook, wopts);
   var blob = new Blob([s2ab(wbout)], {type:"application/octet-stream"});
   return blob;
}
// 打开下载对话
function openDownloadDialog(url, saveName) {
   if(typeof url == 'object' && url instanceof Blob)
   {
       url = URL.createObjectURL(url); // 创建blob地址
   }
   var aLink = document.createElement('a');
   aLink.href = url;
   aLink.download = saveName || ''; // HTML5新增的属性,指定保存文件名,可以不要后缀,注意,file:///模式下不会生效
   var event;
   if(window.MouseEvent) event = new MouseEvent('click');
   else
   {
       event = document.createEvent('MouseEvents');
       event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
   }
   aLink.dispatchEvent(event);
}
// 示例
var aoa = [
   ['姓名', '性别', '年龄', '注册时间'],
   ['张三', '男', 18, new Date()],
   ['李四', '女', 22, new Date()]
];
var sheet = XLSX.utils.aoa_to_sheet(aoa);
openDownloadDialog(sheet2blob(sheet), '导出.xlsx');
</script>

参考链接:

  • https://www.cnblogs.com/liuxianan/p/js-excel.html#%E5%88%A9%E7%94%A8%E5%AE%98%E6%96%B9%E5%B7%A5%E5%85%B7%E7%B1%BB%E7%94%9F%E6%88%90

免责申明:本站发布的内容(图片、视频和文字)以转载和分享为主,文章观点不代表本站立场,如涉及侵权请联系站长邮箱:xbc-online@qq.com进行反馈,一经查实,将立刻删除涉嫌侵权内容。