#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:
Функция экспорта кажется правильной. Все, что вам нужно, это вызвать метод перед функцией экспорта, которая заполнит все развернутые строки. Что-то вроде этого.
- Объявите массив наблюдаемых.
- Зациклите родительскую таблицу и создайте наблюдаемую, чтобы получить данные внутренней таблицы. Не подписывайтесь на наблюдаемое здесь. Просто добавьте наблюдаемое в массив.
- После цикла, используя оператор rxjs, combineLatest. Он будет вызывать все наблюдаемое параллельно. Вы можете подписаться на это и вызвать свой метод excel.