Javascript 如何在使用js xlxs解析xlxs时设置范围(行和列)

Javascript 如何在使用js xlxs解析xlxs时设置范围(行和列),javascript,excel,Javascript,Excel,我正在用js-xlxs解析xlsx var url = "test.xlsx"; var oReq = new XMLHttpRequest(); oReq.open("GET", url, true); oReq.responseType = "arraybuffer"; oReq.onload = function(e) { var arraybuffer = oReq.response; /* convert data to binary string */ var dat

我正在用js-xlxs解析xlsx

var url = "test.xlsx";
var oReq = new XMLHttpRequest();
oReq.open("GET", url, true);
oReq.responseType = "arraybuffer";

oReq.onload = function(e) {
  var arraybuffer = oReq.response;

  /* convert data to binary string */
  var data = new Uint8Array(arraybuffer);
  var arr = new Array();
  for(var i = 0; i != data.length; ++i) arr[i] = String.fromCharCode(data[i]);
  var bstr = arr.join("");

  /* Call XLSX */
  var workbook = XLSX.read(bstr, {type:"binary"});

    var sheet_name_list = workbook.SheetNames;

        sheet_name_list.forEach(function(y) { /* iterate through sheets */
            var worksheet = workbook.Sheets[y];
            for (z in worksheet) {
                /* all keys that do not begin with "!" correspond to cell addresses */
                if(z[0] === '!') continue;
                console.log(y + "!" + z + "=" + JSON.stringify(worksheet[z].v));
            }
    });
}

oReq.send();
这对我来说很好。我可以遍历每个单元格,但需要使用xlsx解析特定范围,如行A160-Q160和列160-202


我在文档中阅读了有关范围的内容,但没有得到它,如何用我的示例设置相同的范围

我像下面这样做。它现在对我有用

function handleFile(e) {

if(!window.FileReader) {
  console.log("Browser doesn't support FileReader");
  return;
} 

var files = e.target.files, i, f,
rowRange = ["A"],//xls column array
/*setting range in xlsx, to parse and get with in range*/
lowerRangeRow = 160,//xls rows lower range
upperRangeRow = 202,//xls rows upper range
row1;

  for (i = 0, f = files[i]; i != files.length; ++i) {
    var reader = new FileReader();
    var name = f.name;
    reader.onload = function(e) {

    var data = e.target.result;
    var workbook = XLSX.read(data, {type: 'binary'});

    var sheet_name_list = workbook.SheetNames;

    sheet_name_list.forEach(function(y) { /* iterate through sheets */
    var worksheet = workbook.Sheets[y];

    for (z in worksheet){
        /* all keys that do not begin with "!" correspond to cell addresses */
        if(z[0] === '!') continue;

        row1 = z.replace(/[^0-9]/g, '');

        if(rowRange.indexOf(z.charAt(0)) > -1 && (row1>=lowerRangeRow && row1<=upperRangeRow)){
            //console.log(worksheet[z].v.trim());
            li = document.createElement("li");
            li.appendChild(document.createTextNode(worksheet[z].v.trim()));
            document.getElementById("xlsxDataList").appendChild(li);
        }           
    }

    });

    };

    reader.readAsBinaryString(f);
    }
}
document.getElementById("file").addEventListener('change', handleFile, false);
函数句柄文件(e){
如果(!window.FileReader){
log(“浏览器不支持FileReader”);
返回;
} 
var files=e.target.files,i,f,
rowRange=[“A”],//xls列数组
/*在xlsx中设置范围,以便在范围内解析和获取*/
lowerRangeRow=160,//xls行下限
upperRangeRow=202,//xls行上限范围
第1行;
对于(i=0,f=files[i];i!=files.length;++i){
var reader=new FileReader();
var name=f.name;
reader.onload=函数(e){
var数据=e.target.result;
var workbook=XLSX.read(数据,{type:'binary'});
var sheet_name_list=workbook.SheetNames;
sheet_name_list.forEach(函数(y){/*遍历工作表*/
var工作表=工作簿.工作表[y];
用于(工作表中的z){
/*所有不以“!”开头的键都对应于单元格地址*/
如果(z[0]=='!')继续;
行1=z。替换(/[^0-9]/g');
如果(rowRange.indexOf(z.charAt(0))>-1&&(row1>=lowerRangeRow&&row1