定义一个js-xlsx单元格区域

我正在尝试使用js-xlsx读取excel值

我能够使用下面的代码从工作簿表单中获取单元格值

if(typeof require !== 'undefined') XLSX = require('xlsx'); var workbook = XLSX.readFile('test.xls'); var sheet_name_list = workbook.SheetNames; var sheet = sheet_name_list.indexOf('sheet_name'); var sheetF48 = workbook.Sheets[sheet_name_list[sheet]]['F48'].v; 

接下来我要做的是定义一个单元格范围,所以只返回这些单元格的值。 我已经想通过以下方式获得工作表的参考:

 var sheet1 = workbook.Sheets[sheet_name_list[sheet_name]] var range = XLSX.utils.decode_range(sheet1['!ref']); 

是否可以通过提供单元格引用来定义单元格范围?

我使用示例( https://github.com/SheetJS/js-xlsx#general-structures ),但我添加了一些代码来获取值。 The mnemonic here is: s for "start of range", e for "end of range", r for "row", c for "column"

 var range = { s: { c: 0, r: 0 }, e: { c: 0, r: 4 } };//A1:A5 var dataRange = []; /* Iterate through each element in the structure */ for (var R = range.sr; R <= range.er; ++R) { for (var C = range.sc; C <= range.ec; ++C) { var cell_address = { c: C, r: R }; var data = XLSX.utils.encode_cell(cell_address); dataRange.push(worksheet[data]); } } 

我一整天都在处理同样的问题。 我无法find一个快速的解决scheme,所以如果你想我听到。 我find了一个临时的解决scheme。 我有两个循环在不同的对象,所以他们可以结合,如果想要的。

 var cellStart = XLSX.utils.encode_cell({c: colStart, r: rowStart}); var cellEnd = XLSX.utils.encode_cell({c: colEnd, r: rowEnd}); var dataRange = []; var z = Object.keys(worksheet); var i = z.indexOf(cellStart); while (i!=z.indexOf(cellEnd) { dataRange.push(z[i]); i++; } var desiredCells = {}; for (n of dataRange) { /* all keys that do not begin with "!" correspond to cell addresses */ if (n[0] === '!') continue; desiredCells[n] = worksheet[n]; }