首页 > 解决方案 > 使用 XLSX NPM 包不显示数组中的值

问题描述

我有一个这样的对象:

{
  property1: [
    { 
      date: Date,
      values: {
        prop1: xyz,
        prop2: xyz,
        prop3: xyz
     }
   }
 ],
 property2: {
   id: 245232,
   description: "My awesome description"
 }
}

在我的 Excel 服务中,并导入了 XLSX 包,我有以下代码。

public exportAsExcelFile(json: any[], excelFileName: string): void {
    const worksheet: XLSX.WorkSheet = XLSX.utils.json_to_sheet(json);
    const workbook: XLSX.WorkBook = { Sheets: { 'data': worksheet }, SheetNames: ['data'] };
    const excelBuffer: any = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });
    this.saveAsExcelFile(excelBuffer, excelFileName);
}

当我调用 excel 服务时,我将传入我的数组Ojbect.property1(这是其他 obj 的数组)。

excel 文件的输出只是 property1 数组中每个对象的日期字段。虽然我希望日期字段为 on1 列,values.prop1 为第 2 列,values.prop2 为第 3 列....

谁能阐明为什么其他列没有从值对象中填充?

标签: javascripttypescriptxlsx

解决方案


是的,根据文档的这一部分,您似乎需要展平对象以使其工作。看看它的例子:

var ws = XLSX.utils.json_to_sheet([
  { S:1, h:2, e:3, e_1:4, t:5, J:6, S_1:7 },
  { S:2, h:3, e:4, e_1:5, t:6, J:7, S_1:8 }
], {header:["S","h","e","e_1","t","J","S_1"]});

请记住,列的顺序基于Object.keys().

希望这可以帮助。:fingers_crossed:


推荐阅读