i’m trying to export an array to an Excel file, i found a solution in another question that works fine when the rules array inside the Entity object is small, but if the array of rules is too big, the Excel column ‘overflows’ causing the information to be incomplete once I download the file.
Code I used is below:
import { Component } from '@angular/core';
import * as XLSX from 'xlsx';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
})
export class AppComponent {
arr: Array<any>;
constructor() {
this.arr = [
{
Response: 0,
Success: true,
Message: '',
StatusCode: 200,
Records: [],
Entity: {
conversionTableEntityId: 3,
name: 'PArea',
translationKey: 'views.conversiontable.table.parea',
rules: [
{
conversionTableRuleId: 3521,
conversionTableEntityId: 3,
levelValue1: '*',
levelValue2: '-',
levelValue3: '-',
levelValue4: '-',
levelValue5: '-',
levelValue6: '-',
result1: 'MISSING PLANT CONVERSION',
result2: 'CST',
result3: '',
createdBy: 'Initial Load',
createdDate: '2019-12-17T00:00:00',
},
{
conversionTableRuleId: 4686,
conversionTableEntityId: 3,
levelValue1: 'US_1000',
levelValue2: '-',
levelValue3: '-',
levelValue4: '-',
levelValue5: '-',
levelValue6: '-',
result1: 'Admin-WestPalmBeach',
result2: 'EST',
result3: '',
createdBy: 'Initial Load',
createdDate: '2021-03-31T00:00:00',
},
{
conversionTableRuleId: 146,
conversionTableEntityId: 3,
levelValue1: 'US_1033',
levelValue2: '-',
levelValue3: '-',
levelValue4: '-',
levelValue5: '-',
levelValue6: '-',
result1: '',
result2: 'EST',
result3: '',
createdBy: 'Initial Load',
createdDate: '2019-12-17T00:00:00',
},
{
conversionTableRuleId: 147,
conversionTableEntityId: 3,
levelValue1: 'US_1035',
levelValue2: '-',
levelValue3: '-',
levelValue4: '-',
levelValue5: '-',
levelValue6: '-',
result1: '',
result2: 'EST',
result3: '',
createdBy: 'Initial Load',
createdDate: '2019-12-17T00:00:00',
},
],
fields: [
{
conversionTableFieldId: 3,
conversionTableEntityId: 3,
name: 'custom_string2',
translationKey: 'views.conversiontable.field.custom_string2',
createdDate: '0001-01-01T00:00:00',
},
],
createdDate: '0001-01-01T00:00:00',
},
TotalRecordCount: 0,
},
];
}
exportToExcel($event) {
const mappedArr = this.arr.map((item) => {
if (item.Entity == null) {
item.Entity = '';
} else if (typeof item.Entity == 'object') {
item.Entity = JSON.stringify(item.Entity);
}
return {
...item,
};
});
const fileName = 'test.xlsx';
const ws: XLSX.WorkSheet = XLSX.utils.json_to_sheet(mappedArr);
const wb: XLSX.WorkBook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, ws, 'test');
XLSX.writeFile(wb, fileName);
}
}
Is it possible to add a row for each item on the rules and the fields array?
This is the output I get currently:
