如何使用xlsx npm包将内容写入特定单元格

12

我需要写入一个数值到指定的单元格(比如D4单元格)中,这是在我的xlsm文件中。我能看到以下选项:

XLSX.writeFile(workbook, 'out.xlsx');

XLSX包文档(写入函数)中:

但我没有看到将一个值写入特定单元格的内容(需要将要写入的值传递到哪里?)。 或者,它不像提供读取特定单元格值的示例那样清晰。 如果有人能为我提供一个简单的代码片段示例,我会感激的。

这是我如何读取特定单元格的值:

if(typeof require !== 'undefined') XLSX = require('C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\xlsx');
var workbook = XLSX.readFile('xlsm');
var first_sheet_name = workbook.SheetNames[0];
var address_of_cell = 'D5';
var worksheet = workbook.Sheets[first_sheet_name];
var desired_cell = worksheet[address_of_cell];
desired_value = (desired_cell ? desired_cell.v : undefined);
console.log('Cell Value is: '+ desired_value);
2个回答

30

如果要写入特定工作表中的特定单元格,比如第一个工作表,可以这样做:

const XLSX = require('xlsx');

// read from a XLS file
let workbook = XLSX.readFile('test.xls');

// get first sheet
let first_sheet_name = workbook.SheetNames[0];
let worksheet = workbook.Sheets[first_sheet_name];

// read value in D4 
let cell = worksheet['D4'].v;
console.log(cell)

// modify value in D4
worksheet['D4'].v = 'NEW VALUE from NODE';

// modify value if D4 is undefined / does not exists
XLSX.utils.sheet_add_aoa(worksheet, [['NEW VALUE from NODE']], {origin: 'D4'});

// write to new file
// formatting from OLD file will be lost!
XLSX.writeFile(workbook, 'test2.xls');
希望这有所帮助。

1
嗨,Sebastian - 非常感谢。那确实帮了我很多。但是我有一些执行上的疑虑。 我想将值写入我正在读取的同一文件中(即工作簿)。 由于字符限制,继续使用另一个评论 :) - Ashish
以下是您指导的代码片段。 如果(typeof require !== 'undefined') XLSX = require('C:\Program Files\nodejs\node_modules\npm\node_modules\xlsx'); var workbook = XLSX.readFile('xlsm1'); var first_sheet_name = workbook.SheetNames[0]; var address_of_cell = 'D5'; var worksheet = workbook.Sheets[first_sheet_name]; desired_cell = worksheet[address_of_cell].v; //desired_value = (desired_cell ? desired_cell.v : undefined); worksheet[address_of_cell].v = '从NODE获取的新值'; XLSX.writeFile(workbook, 'xlsm1'); - Ashish
我想要实现的是: 迭代所需属性名称和工作表的逻辑: 使用具有属性名称的公共文件(与我使用的Excel表中的属性名称相同),以及相应的值。 在Excel表中读取属性名称并在公共文件中搜索相应的名称。 选择其相应的值,然后将它们写入Excel表的相应单元格。 - Ashish
直接文件名对我不起作用 - https://github.com/SheetJS/sheetjs/issues/1189 - Mansi
worksheet['D4'].v -- 这个代码中的 v 是什么意思...? - learnNcode
显示剩余3条评论

11

修改D4单元格中的值

worksheet['D4'].v = 'NEW VALUE from NODE';

只有在文件中已经定义了单元格时,这才有效,但有时您可能想要写入一个未定义的新单元格。 因此,我找到的解决方案是:

修改新单元格D4中的值

XLSX.utils.sheet_add_aoa(worksheet, [['NEW VALUE from NODE']], {origin: 'D4'});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接