我们选择的是github上评分比较高的一个组件:js-excel。这个组件既支持服务端解析,也支持浏览器端解析,而且提供的demo也很全,功能试用起来很方便。
常见问题
如何解析合并单元格?
workbook对象下面的sheets属性下面,有一个!merge属性,是个数组,包含了合并单元格的坐标信息。以官方的node示例代码为例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| var server = http.createServer(function(req, res) { if(req.method !== 'POST') return res.end(html); var form = new formidable.IncomingForm(); form.parse(req, function(err, fields, files) { var f = files[Object.keys(files)[0]]; var wb = XLSX.readFile(f.path); console.log(wb) console.log(wb['Sheets']['Sheet2']['!merges']) var ext = (fields.bookType || "xlsx").toLowerCase(); res.setHeader('Content-Disposition', 'attachment; filename="download.' + (extmap[ext] || ext) + '";'); res.end(XLSX.write(wb, {type:"buffer", bookType:ext})); }); }).listen(PORT);
|
这里的!merges属性的值是一个数组,每个元素标志一个合并单元格的信息,格式类似这样:
//s: start
//e: end
//c: column
//r: row
[ { s: { c: 0, r: 1 }, e: { c: 0, r: 2 } } ]
参考资料
github:https://github.com/SheetJS/js-xlsx
一个纯前端解析Excel的示例:https://www.cnblogs.com/liuxianan/p/js-excel.html