Как экспортировать многоуровневую сетку мата в excel в Angular?

#angular

Вопрос:

У меня есть пример, где у меня есть многоуровневые данные сетки материалов . Я хочу загрузить его в excel .

Проблема в том, что я могу экспортировать только данные 1-го уровня . Данные расширенных строк поступают из разных API на основе идентификатора выбранной строки .

Как я могу экспортировать все уровни данных иерархически в excel ?

Код, который я использовал для экспорта 1-го уровня —

 import * as XLSX from "xlsx";

export class TableUtil {
  static exportToExcel(tableId: string, name?: string) {
    let timeSpan = new Date().toISOString();
    let prefix = name || "ExportResult";
    let fileName = `${prefix}-${timeSpan}`;
    let targetTableElm = document.getElementById(tableId);
    let wb = XLSX.utils.table_to_book(targetTableElm, <XLSX.Table2SheetOpts>{ sheet: prefix });
    XLSX.writeFile(wb, `${fileName}.xlsx`);
  }
}
 

Моя ссылка на Stackblitz для моей сетки материалов в действии —

Ответ №1:

Функция экспорта кажется правильной. Все, что вам нужно, это вызвать метод перед функцией экспорта, которая заполнит все развернутые строки. Что-то вроде этого.

  1. Объявите массив наблюдаемых.
  2. Зациклите родительскую таблицу и создайте наблюдаемую, чтобы получить данные внутренней таблицы. Не подписывайтесь на наблюдаемое здесь. Просто добавьте наблюдаемое в массив.
  3. После цикла, используя оператор rxjs, combineLatest. Он будет вызывать все наблюдаемое параллельно. Вы можете подписаться на это и вызвать свой метод excel.