我正在尝试使用“ 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似乎不起作用(即使它们都是有效的对象数组)\ >
(顶部对象阵列不起作用,底部对象阵列起作用)