Как поместить массив в ту же ячейку в exceljs

Я получаю отчет, и этот отчет выглядит следующим образом.

"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);
    });

  }
}

Но я не могу получить столбец действий, как хочу.

введите здесь описание изображения

Я хочу видеть массив действий в той же ячейке.

введите здесь описание изображения

Спасибо за вашу помощь.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Массив действий должен быть преобразован в строку. Вы должны использовать "\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]);
  }
});

Спасибо Александр. Это сработало !

Resul Sarı 04.04.2023 22:24

Другие вопросы по теме