记录一下近期使用js-xlsx的一些经验
真正的.xls\.xlsx文件,就算是空白的其实是包含了一些内容的
所以并不能直接像写入txt一样直接搞一个file往里面把数据写入就完了
现在网上查得到导出excel的一些方法:
1、在IE上使用ActiveXObject导出文件由于我们客户端是基于chorme的,所以没有做尝试
2、导出csv文件如果是比较简单的表格(没有表格单元格合并等需求),其实csv文件也是一个不错的选择(当然前提是你不介意这个文件是csv文件)。需求比较介意,所以没有对csv进行尝试
3、导出伪.xls\.xlsx文件 ①对html代码进行格式化,最后生成一串uri文件链接,再通过<a>标签进行下载// let uri = \'data:application/vnd.ms-excel;base64,\' // let template = // \'<html xmlns:o="urn:schemas-microsoft-com:office:office" \' + // \'xmlns:x="urn:schemas-microsoft-com:office:excel" \' + // \'xmlns="http://www.w3.org/TR/REC-html40"><head>\' + // \'<!--[if gte mso 9]><xml><x:ExcelWorkbook>\' + // \'<x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}\' + // \'</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions>\' + // \'</x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml>\' + // \'<![endif]--></head><body><table>{table}</table></body></html>\' // let base64 = (s: any) => { // return window.btoa(unescape(encodeURIComponent(s))) // } // let format = (s: any, c: any) => { // return s.replace(/{(\w+)}/g, (m: any, p: any) => { // return c[p] // }) // } // let tableHTML = table[0].innerHTML + table[1].innerHTML // let ctx = { // worksheet: \'统计\', // table: tableHTML.replace(/<(img).*?>/g, \'\') // 筛选掉<img> // } // let downloadLink = document.createElement(\'a\') // downloadLink.href = uri + base64(format(template, ctx)) // downloadLink.download = \'成绩统计.xls\' // downloadLink.click()