├── README.md ├── js └── export.js └── index.html /README.md: -------------------------------------------------------------------------------- 1 | # js-xlsx-demo 2 | 一个xlsx的使用demo,针对table元素,直接进行导出excel 3 | 原文链接[https://blog.csdn.net/tian_i/article/details/84327329] 4 | -------------------------------------------------------------------------------- /js/export.js: -------------------------------------------------------------------------------- 1 | // 将一个sheet转成最终的excel文件的blob对象,然后利用URL.createObjectURL下载 2 | function sheet2blob(sheet, sheetName) { 3 | sheetName = sheetName || 'sheet1'; 4 | var workbook = { 5 | SheetNames: [sheetName], 6 | Sheets: {} 7 | }; 8 | workbook.Sheets[sheetName] = sheet; // 生成excel的配置项 9 | 10 | var wopts = { 11 | bookType: 'xlsx', // 要生成的文件类型 12 | bookSST: false, // 是否生成Shared String Table,官方解释是,如果开启生成速度会下降,但在低版本IOS设备上有更好的兼容性 13 | type: 'binary' 14 | }; 15 | var wbout = XLSX.write(workbook, wopts); 16 | var blob = new Blob([s2ab(wbout)], { 17 | type: "application/octet-stream" 18 | }); // 字符串转ArrayBuffer 19 | function s2ab(s) { 20 | var buf = new ArrayBuffer(s.length); 21 | var view = new Uint8Array(buf); 22 | for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF; 23 | return buf; 24 | } 25 | return blob; 26 | } 27 | 28 | function openDownloadDialog(url, saveName) { 29 | if (typeof url == 'object' && url instanceof Blob) { 30 | url = URL.createObjectURL(url); // 创建blob地址 31 | } 32 | var aLink = document.createElement('a'); 33 | aLink.href = url; 34 | aLink.download = saveName || ''; // HTML5新增的属性,指定保存文件名,可以不要后缀,注意,file:///模式下不会生效 35 | var event; 36 | if (window.MouseEvent) event = new MouseEvent('click'); 37 | else { 38 | event = document.createEvent('MouseEvents'); 39 | event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); 40 | } 41 | aLink.dispatchEvent(event); 42 | } -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Document 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 |
序号姓名年龄兴趣身份证号手机号
1张三18打游戏3203221840875625891374569821
2李四88看电影4203221840875625892374569821
3王五81睡觉5203221840875625893374569821
这是一个合并单元格
53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 136 | 137 | --------------------------------------------------------------------------------