Я получаю отчет, и этот отчет выглядит следующим образом.
"reports": [
{
"id": 3,
"operatorName": "string",
"systemName": "string",
"serverName": "string",
"alertTypeName": "string",
"procedureName": "string",
"alertDate": "2023-04-02T06:55:59.446Z",
"departmentName": "string",
"noticeTypeName": "string",
"ticket": "string",
"alertCount": 1,
"alertDetail": "string",
"actions": [
{
"id": 1,
"processId": 3,
"actionTypeName": "string",
"actionDescription": "string",
"actionDate": "2023-04-02T06:55:59.446Z"
}]]
И я экспортирую этот отчет с помощью следующей службы Excel.
/* Get Data from Json */
let columnsArray: any[];
for (const key in json) {
if (json.hasOwnProperty(key)) {
columnsArray = Object.keys(json[key]);
}
}
/* Add Data */
data.forEach((element : any) => {
const eachRow: any[] = [];
columnsArray.forEach((column) => {
eachRow.push(element[column]);
});
if (element.isDeleted === 'Y') {
const deletedRow = worksheet.addRow(eachRow);
deletedRow.eachCell((cell) => {
cell.font = {name: 'Calibri', family: 4, size: 11, bold: false, strike: true};
});
} else {
worksheet.addRow(eachRow);
}
});
worksheet.addRow([]);
/* Save Excel */
workbook.xlsx.writeBuffer().then((data: ArrayBuffer) => {
const blob = new Blob([data], {type: EXCEL_TYPE});
fs.saveAs(blob, excelFileName + EXCEL_EXTENSION);
});
}
}
Но я не могу получить столбец действий, как хочу.
введите здесь описание изображения
Я хочу видеть массив действий в той же ячейке.
введите здесь описание изображения
Спасибо за вашу помощь.
Массив действий должен быть преобразован в строку. Вы должны использовать "\n" для возврата новой строки.
const eachRow: any[] = [];
columnsArray.forEach((column) => {
if (column === 'actions') {
const actions = element[column].map((action: any) => {
//format each action here. I you want all object, try:
//return JSON.stringify(action)
return `${action.actionTypeName} (${action.actionDate})`;
}).join('\n');
eachRow.push(actions);
} else {
eachRow.push(element[column]);
}
});
Спасибо Александр. Это сработало !