JavaScript解析Excel

我们选择的是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)
// !merges属性包含了合并单元格信息
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