读取Xlsx文件并使用节点生成Json

时间:2016-05-19 07:42:13

标签: javascript arrays json node.js excel

我正在使用XLSX npm模块来读取文件,并在此处创建Json但日期不正确我的xlsx文件。

enter image description here

我正在使用此代码来阅读文件

XLSX = require('xlsx'),
exports.read = function (req, res) {
var workBook = XLSX.readFile('sample.xlsx');
    var sheet_name_list = workBook.SheetNames;
    var headers = {};
    var data = [];

        var workSheet = workBook.Sheets['sample'];
        return res.json(XLSX.utils.sheet_to_json(workSheet));
        for (var i in workSheet) {
            if (i[0] === '!') continue;
            //parse  the column, row, and value
            var col = i.replace(/[0-9]/g, '')
            var row = parseInt(i.replace(/[A-Z]/g, ''));
            var value = workSheet[i].v;
            //store header names
            if (row == 1) {
                headers[col] = value;
                continue;
            }
            if (!data[row]) {
                data[row] = {};
            }

            data[row][headers[col]] = value;
        }
        //droping the first two rows of empty
        data.shift();
        data.shift();
        console.log(data);
        res.json(data)


    });

Json就像这样

[{'Report Date':45678
    'Name':'AAA',
    'office':'xxxx'
    },
    {'Report Date':45876
    'Name':'ccc',
    'office':'ggg'
    }]

我希望输出Json像这样

 [{'Report Date':'19-05-2016'
    'Name':'AAA',
    'office':'xxxx'
    },
    {'Report Date':'20-05-2016'
    'Name':'ccc',
    'office':'ggg'
    }]

1 个答案:

答案 0 :(得分:2)

issue代码下面的提示对我有用:

XLSX = require('xlsx');
var conv = require('ssf');
var workBook = XLSX.readFile('sample.xlsx');

var workSheet = workBook.Sheets['sample'];
var test = XLSX.utils.sheet_to_json(workSheet);
//test = [{'Report Date':45678, 'Name':'AAA', 'office':'xxxx'},{'Report Date':45876, 'Name':'ccc', 'office':'ggg'}]
for(var i=0;i<test.length;i++) {
    for(var key in test[i]) {
        if(key.length - key.indexOf('Date') == 4) {
            test[i][key] = conv.format('dd-mm-yyy', test[i][key]);
        }
    }
}
console.log(JSON.stringify(test).replace(/,/g,',\n'));