用nodeJs覆盖excel文件

我想用sailsJs覆盖一个excel文件,但是我真的不知道该怎么做。我尝试了node-xlsx,exceljs但是没有为我工作。我不想创build一个新的文件,但是修改一个现有的文件。 有没有人有一个想法如何做到这一点? 提前致谢。 这是我的代码:

var Excel = require("exceljs"); excel:function(req,res){ var workbook = new Excel.Workbook(); workbook.xlsx.writeFile("test.xls") .then(function() { var sheet = workbook.addWorksheet("My Sheet"); var worksheet = workbook.getWorksheet("My Sheet"); worksheet.columns = [ { header: "Id", key: "id", width: 10 }, { header: "Name", key: "name", width: 32 }, { header: "DOB", key: "DOB", width: 10 } ]; worksheet.addRow({id: 1, name: "John Doe", dob: new Date(1970,1,1)}); worksheet.addRow({id: 2, name: "Jane Doe", dob: new Date(1965,1,7)}); }); } 

这创build了一个名为“test.xls”的文件,但是这个文件是空的,并且不包含我传入的任何信息,就像行中的参数一样。

xlsx.writeFile只适用于写入CSV文件。 您将需要打开一个stream来编辑XLS文件。 文档中提供了更多信息。

下面是一个示例(未testing),你需要做什么来写入现有的Excel文件。

 var Excel = require("exceljs"); excel:function(req,res){ // This creates a file and is not needed. // You will need to open a stream instead // var workbook = new Excel.Workbook(); // workbook.xlsx.writeFile("test.xls"); // You can find an example of the code here: // https://github.com/guyonroche/exceljs#writing-xlsx var options = { filename: "./test.xls", // existing filepath useStyles: true, // Default useSharedStrings: true // Default }; var workbook = new Excel.stream.xlsx.WorkbookWriter(options); var sheet = workbook.addWorksheet("My Sheet"); var worksheet = workbook.getWorksheet("My Sheet"); worksheet.columns = [ { header:"Id", key:"id", width:10 }, { header:"Name", key:"name", width:32 }, { header:"DOB", key:"DOB", width:10 } ]; worksheet.addRow({id: 1, name: "John Doe", dob: new Date(1970,1,1)}); worksheet.addRow({id: 2, name: "Jane Doe", dob: new Date(1965,1,7)}); worksheet.commit(); // Need to commit the changes to the worksheet workbook.commit(); // Finish the workbook };