NodeJS 如果数字字段为空,则会发生错误

6yoyoihd  于 2023-03-17  发布在  Node.js
关注(0)|答案(2)|浏览(134)

当包含数字的字段为空值时,我得到一个错误。
发送到单元格[“F3”]的Number函数的值不是数字,它具有对象类型和空值
这个问题能解决吗?
下面是如何用数值填充表格的示例:

var styleNumber = wb.createStyle({
    font: {
        color: '#000000',
        size: 14,
        name: 'Times New Roman',
    },
    alignment: {
        horizontal: 'center',
        vertical: 'top'
    }
});

reports.forEach((report, index) => ws.cell(index + 3, 6).number(report._previousDataValues.code).style(styleNumber));
zengzsys

zengzsys1#

javascript对||操作符有一个巧妙的技巧,您可以使用它
它所做的是返回第一个值,如果它是一个真实值,如果它不是第二个
这将导致

reports.forEach((report, index) => ws.cell(index + 3, 6).number(report._previousDataValues.code || 0).style(styleNumber));

下面我们来看看这段代码会发生什么:

previousDataValues.code = 1234
(_previousDataValues.code || 0) //returns 1234
previousDataValues.code = null
(_previousDataValues.code || 0) //returns 0
previousDataValues.code = 0
(_previousDataValues.code || 0) //returns 0
previousDataValues.code = -1234
(_previousDataValues.code || 0) //returns -1234

请看这个答案:https://stackoverflow.com/a/476445/8796313

cgh8pdjw

cgh8pdjw2#

我曾经收到过同样的消息。你可能使用了像 excel4nodeexceljs 这样的模块,对吧?问题出在.number(report._previousDataValues.code)上。这里你认为变量report._previousDataValues.code总是一个数字。防止这种问题的一个方法是测试这个变量,并以不同的格式将其写入工作簿。类似这样:

reports.forEach((report, index) => { 
if (typeof report._previousDataValues.code === 'number'){
    ws.cell(index + 3, 6).number(report._previousDataValues.code).style(styleNumber)
}else{
    ws.cell(index + 3, 6).string(report._previousDataValues.code).style(styleNumber)
}});

相关问题