Javascript 如何在使用js xlxs解析xlxs时设置范围(行和列)
我正在用js-xlxs解析xlsxJavascript 如何在使用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
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