xlsx-写入已知的单元格编号。无法分配价值

时间:2019-02-28 13:54:09

标签: javascript arrays node.js xlsx

我正在使用包xlsx并尝试在循环中编写某些内容。

如果我直接写单元格编号,例如G3,它可以正常工作,但是显然这样是不行的:

    const workbook = XLSX.readFile('test.ods');
    const sheet_name_list = workbook.SheetNames;  
    const sheet = workbook.Sheets[workbook.SheetNames[0]];
      (...)
    let i = `G${k+1}`;
//we got a match , write the scores in the cells
sheet[i] = {t: 's' /* type: string */, v: checkData[k].location_id };

关于如何使用单元格名称的动态值的任何想法?

1 个答案:

答案 0 :(得分:0)

sheet数组的每个项目都是

的对象
{
    t: 's', // (string) Or 'n' (num) / 'b' (bool) /'d' (date)
    v: 'someValue'
}

这是通过对单元格对象使用简单的赋值运算符来修改sheet[i]

const XLSX = require('xlsx');

var workbook = XLSX.readFile('test.xlsx');
const sheet = workbook.Sheets[workbook.SheetNames[0]];

for (let k = 1 ; k < 4 ; k++) {
    let i = `A${k+1}`;    
    console.log("Before update:");
    console.log(sheet[i]);
    console.log("After update:");
    let cell = {
        t: 's',
        v: 'myScore' + k
    }
    sheet[i] = cell;
    console.log(sheet[i]);
}

对于给定的test.xlsx:

      A
---------
1 | TRUE
1 | foo
1 | baz

输出将是:

Before update:
{ t: 'b', v: true }
After update:
{ t: 's', v: 'myScore1' }
Before update:
{ t: 's', v: 'foo' }
After update:
{ t: 's', v: 'myScore2' }
Before update:
{ t: 's', v: 'baz' }
After update:
{ t: 's', v: 'myScore3' }

您没有在代码中提到什么是checkData数组,但这没关系,我只假设它返回一个'myScore' + k