简体   繁体   中英

Read full row from xlsx file in js

I have an XLSX full of data and I need to store each row in an object (I just need a few columns). I'm using SheetJS js-xlsx

Here is my code:

var workbook = XLSX.read(fileXLSX.getContents(), {type: 'base64'});
for (var sn in workbook.SheetNames) {
    var sheet = workbook.Sheets[workbook.SheetNames[sn]];
    for (var z in sheet) {
        var obj = {};
        switch (z.toString()[0]) {
            case 'C':
                obj.c = sheet[z].v;
                break;
            case 'D':
                obj.d = sheet[z].v;
                break;
        }
}

This code is obviously wrong because it reads column to column instead of row to row. I'm trying to figure out a way to do it I need objects like this:

obj1 = {
c: (C1)
d: (D1)}

obj2 = {
c: (C2)
d: (D2)}

Solved using:

    for (var sn in workbook.SheetNames) {
        var sheet = workbook.Sheets[workbook.SheetNames[sn]];
        var range = XLSX.utils.decode_range(sheet['!ref']);
        for (var rowNum = range.s.r; rowNum <= range.e.r; rowNum++) {

            //column c
            var c = sheet[XLSX.utils.encode_cell({r: rowNum, c: 2})];
            //column d
            var d = sheet[XLSX.utils.encode_cell({r: rowNum, c: 3})];

            // get data using c.v or d.v
        }
    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM