生成的对象数组与静态测试对象数组的作用不同

我正在尝试使用“ xlsx”生成带有json数据的Excel工作表。当我使用测试数据时,一切似乎都能正常工作:

//outputs excel file correctly with data

var excelData = [{ test: 'test',test2: "yes" },{ test: 'testingAgain',test2: "no" }];
this.excelService.exportJSON(excelData,"test2");

但是当我生成自己的具有动态属性的对象数组时,即使我进行调试-上面的静态测试对象和动态生成的对象看起来相同-我的excel文件输出的数据也为零,但它拒绝工作。 / p>

//outputs empty file even though object Array is a valid object containing valid data with object keys.

var objectArray = [];
dataDocs.forEach(doc => {
    let obj = {};
    obj["test"] = "test";
    obj["test2"] = "yes";
    objectArray.push(obj);
}
this.excelService.exportJSON(objectArray,"test3");

我的Excel服务:

 export class ExcelService {

  private EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';
  private EXCEL_EXTENSION = '.xlsx';

  constructor() { }

  exportJSON(jsonData: any,fileName) {
    let worksheet: XLSX.WorkSheet = XLSX.utils.json_to_sheet(jsonData);
    let workbook: XLSX.WorkBook = { Sheets: { 'data': worksheet },SheetNames: ['data'] };
    let excelBuffer: any = XLSX.write(workbook,{ bookType: 'xlsx',type: 'array' });

    return this.generateExcelFile(excelBuffer,fileName);
  }
  private generateExcelFile(buffer: any,fileName: string) {
    let data: Blob = new Blob([buffer],{
      type: this.EXCEL_TYPE
    });
    return FileSaver.saveAs(data,fileName + this.EXCEL_EXTENSION)
  }
}

生成的对象数组与静态测试对象数组的作用不同

我将不胜感激。上面是我要解释的摘要。用2个对象和属性初始化的对象数组在xls中工作正常,但是如果我生成对象并将其推入对象数组,则xlsx似乎不起作用(即使它们都是有效的对象数组)\ >

(顶部对象阵列不起作用,底部对象阵列起作用)

linchao911 回答:生成的对象数组与静态测试对象数组的作用不同

您的dataDocs数组似乎为空。因此,尝试添加检查条件以查看dataDocs是否包含要运行的foreach语句数据:

var objectArray = [];
if (dataDocs && dataDocs.length > 0) {
    dataDocs.forEach(doc => {
        let obj = {};
        obj["test"] = "test";
        obj["test2"] = "yes";
        objectArray.push(obj);
    }
}
this.excelService.exportJSON(objectArray,"test3");

更新:

您可以添加检查条件以查看objectArray是否包含数据,如果有数据,则只需调用exportJson方法:

if (objectArray && objectArray.length > 0) {
    this.excelService.exportJSON(objectArray,"test3");
}
本文链接:https://www.f2er.com/3030257.html

大家都在问