2015-05-21 6 views
1

Я пытаюсь читать значения Excel с помощью JS-XLSXОпределение Js-XLSX диапазон ячеек

Я смог получить значение ячейки из книги листа, используя следующий код

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']); 

Можно ли определить диапазон ячеек, предоставляя ссылки на ячейки?

ответ

0

Я работаю над той же проблемой весь день. Я не смог найти быстрое решение, поэтому, если бы вы это сделали, я бы хотел услышать. Я нашел временное решение. У меня были две петли в разных объектах, поэтому они могут быть объединены при необходимости.

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]; 
    } 

Джейд

3

Я использую пример (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.s.r; R <= range.e.r; ++R) { 
    for (var C = range.s.c; C <= range.e.c; ++C) { 
    var cell_address = { c: C, r: R }; 
    var data = XLSX.utils.encode_cell(cell_address); 
    dataRange.push(worksheet[data]); 
    } 
}