用Excel数据加载数组并返回

时间:2018-08-23 14:28:23

标签: javascript node.js excel exceljs

有人可以协助我用excel数据加载数组并将其作为函数返回吗?这是我的初始代码:

var excel = require('exceljs');

var wb = new excel.Workbook();
var path = require('path');
var filePath = path.resolve(__dirname,'data.xlsx');

function signIn(){
    var SignIn = [];
    wb.xlsx.readFile(filePath).then(function(){
        var sh = wb.getWorksheet("Sheet1");
        for(var i = 1; i < 3; i++){
            SignIn.push(sh.getRow(i).getCell(2).value);
        }
    });
    return SignIn
}

1 个答案:

答案 0 :(得分:0)

Workbook.readFile是异步的,您需要使用回调或Promise类型方法。使用诺言,我们可以尝试:

var excel = require('exceljs');
var wb = new excel.Workbook();
var path = require('path');
var filePath = path.resolve(__dirname,'data.xlsx');

function signIn() {
    var SignIn = [];
    return wb.xlsx.readFile(filePath).then( () => {
        var sh = wb.getWorksheet("Sheet1");
        for(var i = 1; i < 3; i++){
            SignIn.push(sh.getRow(i).getCell(2).value);
        }
        return SignIn;
    });
}

async function testReadData() {
    try {
        let data = await signIn();
        console.log('testReadData: Loaded data: ', data);
    } catch (error) {
        console.error('testReadData: Error occurred: ', error);
    }
}
testReadData();

或者您可以使用回调类型方法:

function signInWithCallback(callback) {
    var SignIn = [];
    wb.xlsx.readFile(filePath).then(function(){
        var sh = wb.getWorksheet("Sheet1");
        for(var i = 1; i < 3; i++){
            SignIn.push(sh.getRow(i).getCell(2).value);
        }
        callback(SignIn);
    });
}

signInWithCallback((data) => console.log('Callback: Data: ', data));