js-xlsx是一款用于excel文件处理的脚本
github地址:https://github.com/protobi/js-xlsx/tree/beta
由于文档是英文的,为了自己下次能更快上手使用,这篇文档就介绍下它的简单使用
安装
这其实没啥好说的,第二种script标签引入后,是可以直接使用 XLSX 对象的,下面也主要介绍这种引入方式的写法
创建workbook对象
通过input file元素的onchange事件读取excel文件的数据,在图片注释位置处进行操作
workbook对象
SheetNames存放表名,Sheets存放表数据
workbook.SheetNames.forEach(item => { console.log(workbook.Sheets[item]) })
t 类型,v 值, f 公式,还有其他的请自行查阅文档
内置函数
sheet-to-json 生成一个数组对象
显然是把第一行的标题作为了属性名
下载excel文件
因为浏览器无法对本地文件进行修改,所以对读取的excel做出修改后,需要重新下载修改后的文件,这里通过纯js方式来实现下载
// 生成二进制文件编码 var wopts = { bookType:'xlsx', bookSST:false, type:'binary' }; var wbout = XLSX.write(workbook,wopts); 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;
}
// 创建a标签用于下载
var eleLink = document.createElement('a');
eleLink.download = 'excel.xlsx';
eleLink.style.display = 'none'; // 字符内容转变成blob对象
var blob = new Blob([s2ab(wbout)]); eleLink.href = URL.createObjectURL(blob); // 触发点击 document.body.appendChild(eleLink);
eleLink.click();
// 然后移除 document.body.removeChild(eleLink);