我正在使用包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 };
关于如何使用单元格名称的动态值的任何想法?
答案 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
。