Как преобразовать вложенный объект json в таблицу excel, используя библиотеку xlsx npm? - PullRequest
4 голосов
/ 14 июня 2019

У меня есть вложенный объект json.Для простоты:

data = {'key1': 1, 'key2': 2, 'key3': {'nestedKey1': 3, 'nestedKey2': 4}}

Реальный объект больше, но дело в том, что он вложенный.Значения могут быть строками, числами или другими объектами.Теперь мне нужно получить таблицу Excel, которая (для этого конкретного json будет выглядеть следующим образом):

|----------------------------------------
| key1 | key2 |           key3          |
|      |      |--------------------------
|      |      | nestedKey1 | nestedKey2 |
|----------------------------------------
|  1   |  2   |     3      |      4     |
|----------------------------------------

Чтобы сделать это, я попытался использовать библиотеку xlsx.Я импортирую библиотеку следующим образом:

import { WorkSheet, WorkBook, utils, writeFile } from 'xlsx';

Внутри моего метода я определяю объект:

let myObj = {'key1': 1, 'key2': 2, 'key3': {'nestedKey1': 3, 'nestedKey2': 4}}

, затем создаю рабочий лист и рабочую книгу:

const workSheet: WorkSheet = utils.json_to_sheet([myObj]);
const workBook: WorkBook = utils.book_new();
utils.book_append_sheet(workBook, workSheet, 'object_to_save');

и, наконец, запишите его в файл:

writeFile(workBook, 'Tests.xlsx');

Но вполне ожидаемо, что он не обрабатывает вложенный объект так, как мне бы хотелось.Я не могу понять, что мне нужно сделать, чтобы получить желаемый результат.

1 Ответ

0 голосов
/ 21 июня 2019

Это всегда даст вам только плоский результат.Вы можете попробовать некоторые онлайн-конвертеры, которые делают только flatten.https://json -csv.com /

Но если вы используете кендо-сетку, она экспортируется в соответствии с вашими ожиданиями.

https://demos.telerik.com/kendo-ui/grid/excel-export

...