我写了一个脚本,用ExcelJS创建一个新的excel文件。添加3个标题并插入2行。然后将该文件保存到磁盘。
在下一步中,它应该读取先前保存的文件,添加1行并以新名称再次保存。我找不到我尝试添加第3行的第二部分永远不会发生的原因。两个文件看起来都一样,并且控制台中没有错误。
const Excel = require('exceljs');
async function exTest(){
const workbook = new Excel.Workbook();
const worksheet = workbook.addWorksheet("My Sheet");
worksheet.columns = [
{header: 'Id', key: 'id', width: 10},
{header: 'Name', key: 'name', width: 32},
{header: 'D.O.B.', key: 'dob', width: 15,}
];
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)});
// save under export.xlsx
await workbook.xlsx.writeFile('export.xlsx');
// load a copy of export.xlsx
const newWorkbook = new Excel.Workbook();
await newWorkbook.xlsx.readFile('export.xlsx');
const newworksheet = newWorkbook.getWorksheet('My Sheet');
newworksheet.addRow(
{id: 3, name: 'New Guy', dob: new Date(2000, 1, 1)}
);
await newWorkbook.xlsx.writeFile('export2.xlsx');
console.log("File is written");
};
exTest();
通过添加数组来解决它,以描述代码的第二部分中的列。然后成功添加了第3行。将具有列名的对象传递给addRow()
时,我必须提供excel文件中已存在的列的说明。
const Excel = require('exceljs');
async function exTest(){
const workbook = new Excel.Workbook();
const worksheet = workbook.addWorksheet("My Sheet");
worksheet.columns = [
{header: 'Id', key: 'id', width: 10},
{header: 'Name', key: 'name', width: 32},
{header: 'D.O.B.', key: 'dob', width: 15,}
];
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)});
// save under export.xlsx
await workbook.xlsx.writeFile('export.xlsx');
//load a copy of export.xlsx
const newWorkbook = new Excel.Workbook();
await newWorkbook.xlsx.readFile('export.xlsx');
const newworksheet = newWorkbook.getWorksheet('My Sheet');
newworksheet.columns = [
{header: 'Id', key: 'id', width: 10},
{header: 'Name', key: 'name', width: 32},
{header: 'D.O.B.', key: 'dob', width: 15,}
];
await newworksheet.addRow({id: 3, name: 'New Guy', dob: new Date(2000, 1, 1)});
await newWorkbook.xlsx.writeFile('export2.xlsx');
console.log("File is written");
};
exTest();