Как экспортировать массив динамических объектов JSON в CSV в Angular? - PullRequest
2 голосов
/ 04 апреля 2019

Я пытаюсь экспортировать массив объектов JSON в CSV, который может варьироваться по количеству пар ключ-значение (то есть некоторые могут иметь дополнительные столбцы, чем остальные). В настоящее время я могу экспортировать, используя пакет Angular2CSV, но он поддерживает только при условии, что включены все столбцы.

Код ниже показывает мою текущую реализацию, где сервис возвращает данные для загрузки.

private exportTable(){
        this.service.exportDataForDownload().then(response => {
            let csvFileName = "Results";
            new Angular2Csv(response, csvFileName, {headers: this.tableheaders});

        });
    }

1 Ответ

1 голос
/ 04 апреля 2019

Исходя из этой проблемы (https://github.com/javiertelioz/angular2-csv/issues/27), вы можете найти вдохновение для более динамичного решения:

У решения проблемы есть что-то вроде:

new Angular2Csv(this.data, 'myCsv', { headers: Object.keys(this.data[0]) });

На основании этого:

Создать набор, содержащий уникальные заголовки:

let headerSet = new Set();

Для каждой строки в ответе получить ключи этой строки и добавить их в набор (псевдокод)

for (r of/in response) {
    headerSet.add(Object.keys(r));
}

Для части данных вы должны перезапустить процесс и проверить для каждой строки, есть ли у него определенный ключ, и если нет, нужно ли ставить и очищать значение или что-то, что вам нравится, с этим отсутствующим ключом (это сложно поскольку все значения должны быть вставлены в правильном порядке, поэтому одного только решения Set может быть недостаточно).

Когда все возможные заголовки / данные добавлены / добавлены:

new Angular2Csv(response, csvFileName, {headers: Array.from(headerSet});

Точный код должен быть составлен. Я не проверял и не знаю, что это за формат данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...