javascript - 如何在 Angular 中将动态 JSON 对象数组导出为 CSV?

标签 javascript angular typescript csv

我正在尝试将一组 JSON 对象导出为 CSV,而键值对的数量可能会有所不同(这意味着有些列可能比其他列多)。我目前能够使用 Angular2CSV 包导出,但它只支持包含所有列的情况。

下面的代码显示了我当前的实现,其中服务返回要下载的数据。

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

        });
    }

最佳答案

基于这个问题 (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});

需要编写确切的代码。我没有检查也不知道数据格式是什么。

关于javascript - 如何在 Angular 中将动态 JSON 对象数组导出为 CSV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55505419/

相关文章:

javascript - d3 多行,鼠标悬停在光标上可获取 y 和 x 值

c# - 如何在 Angular 和 Asp.Net Boilerplate 上获取当前用户 ID?

typescript - useStore() 方法总是导致组件内未定义的值

javascript - 如何确定要从 block 内调用的回调函数的范围?

javascript - IE 8 中的 sifr 3 r436 javascript 错误

javascript - 应用 function.call() 后局部变量变为全局变量

javascript - AngularJs - 将作用域函数应用于工具提示中的变量时出现奇怪的错误

angular - 如何在 Angular 2 中截断 HTML 内容?

javascript - 无法使用 ng-Bootstrap 日期选择器

javascript - 处理没有类型或更新类型的 TS 库