使用ExcelJS和NodeJS修改xlsx文件

我的目标是读取一个xlsx文件,添加一行并输出。 够简单吧?

这是迄今为止的代码:

var filename1="input.xlsx"; var filename2="output.xlsx"; var Excel = require('exceljs'); var workbook = new Excel.Workbook(); workbook.xlsx.readFile(filename1); workbook.getWorksheet("Sheet 1").addRow([1,2,3]); workbook.xlsx.writeFile(filename2); 

我相信这应该读取来自“input.xlsx”的数据,除了已经在工作表上的数据之外,还要写一行并输出。 它不是复制文件,而是创build一个空的“output.xlsx”。

我知道我在做一些愚蠢的事情,也是对nodeJS全新的。 有什么想法吗?

您遇到的问题与Node.jsasynchronous性质有关。 当你调用readFile(filename1)它开始读取文件。 但是它是一个asynchronous(非阻塞)函数,所以在读完之前,这行之后的代码被执行。

有多种方式来处理:callback(在asynchronous调用完成时调用),承诺(当调用执行时调用。),ES6生成器和ES7asynchronous/等待关键字。

exceljs与承诺(根据文档)工作,所以你可以做到以下几点:

 'use strict'; const Excel = require('exceljs'); let filename1 = 'input.xlsx'; let filename2 = 'output.xlsx'; let workbook = new Excel.Workbook(); workbook.xlsx.readFile(filename1) .then(() => { workbook.getWorksheet('Sheet 1').addRow([1, 2, 3]); return workbook.xlsx.writeFile(filename2); }) .then(() => { console.log('File is written'); }) .catch(err => console.error(err));