节点xlsx模块获取excel文件的标题

如何在节点xlsx( https://www.npmjs.com/package/xlsx )模块中获取给定Excel文件的标题?

正如我所能find的,没有暴露的方法来从模块中获取Excel文件的标题。 所以我从他们的源代码中拷贝了几个函数(所有的方面都是作者, https://github.com/SheetJS/js-xlsx ),并且做了一些改动。

function getHeaders(sheet){ var header=0, offset = 1; var hdr=[]; var o = {}; if (sheet == null || sheet["!ref"] == null) return []; var range = o.range !== undefined ? o.range : sheet["!ref"]; var r; if (o.header === 1) header = 1; else if (o.header === "A") header = 2; else if (Array.isArray(o.header)) header = 3; switch (typeof range) { case 'string': r = safe_decode_range(range); break; case 'number': r = safe_decode_range(sheet["!ref"]); rsr = range; break; default: r = range; } if (header > 0) offset = 0; var rr = XLSX.utils.encode_row(rsr); var cols = new Array(rec - rsc + 1); for (var C = rsc; C <= rec; ++C) { cols[C] = XLSX.utils.encode_col(C); var val = sheet[cols[C] + rr]; switch (header) { case 1: hdr.push(C); break; case 2: hdr.push(cols[C]); break; case 3: hdr.push(o.header[C - rsc]); break; default: if (val === undefined) continue; hdr.push(XLSX.utils.format_cell(val)); } } return hdr; } function safe_decode_range(range) { var o = {s:{c:0,r:0},e:{c:0,r:0}}; var idx = 0, i = 0, cc = 0; var len = range.length; for(idx = 0; i < len; ++i) { if((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break; idx = 26*idx + cc; } osc = --idx; for(idx = 0; i < len; ++i) { if((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break; idx = 10*idx + cc; } osr = --idx; if(i === len || range.charCodeAt(++i) === 58) { oec=osc; oer=osr; return o; } for(idx = 0; i != len; ++i) { if((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break; idx = 26*idx + cc; } oec = --idx; for(idx = 0; i != len; ++i) { if((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break; idx = 10*idx + cc; } oer = --idx; return o; } 

通过传递工作表调用getHeaders函数将返回excel工作表的标题数组。