我尝试过创建一个excel,但是收到了一个提交错误。我的代码有什么问题。如果我删除sheet.commit()
和workbook.commit()
程序可以正常工作。
const Excel = require('exceljs');
const fs = require('fs');
const workbook = new Excel.Workbook();
const sheet = workbook.addWorksheet("MySheet");
const writeToExcel = fs.createWriteStream("./test/testfile.xlsx");
sheet.columns = [
{ header: 'Id', key: 'id', width: 10 },
{ header: 'Name', key: 'name', width: 40 },
{ header: 'DOB', key: 'dob', width: 10, outlineLevel: 1}
];
let names = ['Windows', 'Mac Os', 'Ubuntu', 'B OS'];
let i = 2;
names.forEach( (singleName) => {
let row = sheet.getRow(i);
row.values = {
id: i-1,
name: singleName,
dob: new Date()
};
row.commit();
i++;
});
sheet.commit();
workbook.commit();
workbook.xlsx.write(writeToExcel)
.then( (response) => {
console.log("Excel file is created with data.");
})
.catch( (error) => {
console.log("Some problem in creating an excel file. Please check for errors...");
});
以下是错误。
λ node excel.js
c:\Personal\node_projects\node-js-playlist-master\excel.js:29
sheet.commit();
^
TypeError: sheet.commit is not a function
at Object.<anonymous> (c:\Personal\node_projects\node-js-playlist-master\excel.js:29:7)
at Module._compile (module.js:624:30)
如果我删除工作表提交,则会在工作簿提交行上引发错误。任何帮助在这里都很有用..
答案 0 :(得分:3)
不知道你是否找到了答案。
具有提交功能的唯一对象是行和XLSX流。
您已使用
提交每一行 row.commit();
表格本身没有提交功能,行也没有。您可能在示例中找到的内容如下:
sheet.addRow([...]).commit();
但是,这不是在工作表上提交,而是在行上提交。
至于工作簿提交。您可能已经看到了提交的this example,但这又是对XLSX流的提交,而不是工作簿本身。
答案 1 :(得分:0)
您不需要commit()调用。
只需删除下面几行。而且有效
sheet.commit();
workbook.commit();
row.commit();
只有流式编写器才需要commit()函数。