【问题标题】:Unable to write data (addRow) into Excel file in Nodejs无法将数据(addRow)写入Nodejs中的Excel文件
【发布时间】:2020-07-11 11:51:11
【问题描述】:

我正在尝试使用 ExcelJS 库将数据写入 Excel 文件。我成功地创建了工作表并添加了列数据。

但是,在尝试实现 addRow() 或 addRows() 方法时,数据不会添加到 Excel 工作表中。

这是我试过的代码:

 const ExcelJS = require('exceljs');
 var workbook = new ExcelJS.Workbook();
 var worksheet = workbook.addWorksheet('Payment Data');
 worksheet.columns = reportHeaders; //reportHeaders is an array of header objects

我可以看到在 Excel 表中成功创建的列。麻烦从下面开始,我试图将数据添加到行中:

第一种方法:

  worksheet.addRows(excelData);//excelData is an array of data objects

第二种方法:

  for(var rowItem in excelData){
  worksheet.addRow(excelData[rowItem]);}

但是,这些方法中的任何一种似乎都不适合我。 最后保存文件:

  workbook.xlsx.writeFile('PaymentData.xlsx')

我有什么遗漏吗?任何帮助将不胜感激。

【问题讨论】:

标签: javascript node.js exceljs


【解决方案1】:

因此,您的代码的问题是,您试图将数据添加到列中而未在 columns 数组中指定 key 属性,因此无法添加数据。

我将worksheet.columns 数组修改为如下所示:

worksheet.columns = [
    { header: "A", key: "a" },
    { header: "B", key: "b" },
];

这会解决你的问题

【讨论】:

  • 将此答案标记为正确(部分);除了添加key属性;在为 excelData 数组赋值时,我分配错了。应将值分配给key 属性,而不是header 列。我在做什么:excelData[row].headerName = value; 我更正了什么:excelData[row].key = value;(key 是 key 属性对应于 headerName 的值)
【解决方案2】:

我设法将对象转换为数组并将其传递给 addRow 方法。 这对我有用。

我仍然不确定为什么我不能将对象数组传递给 addRow 方法。

【讨论】:

  • 因为您没有为标题定义键,所以它不知道每个对象字段将映射到哪一列。查看 Vibhor 的回答
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-27
  • 1970-01-01
  • 1970-01-01
  • 2021-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多