【问题标题】:JSON to CSV with separated columnsJSON 到 CSV 与分隔列
【发布时间】:2014-04-18 09:44:05
【问题描述】:

在一个角度项目中,我试图实现一个函数来从一组对象生成一个 CSV 文件。

对象数组填充了一个 ng-Table,所以起初我尝试使用:http://bazalt-cms.com/ng-table/example/15 这在 chrome 中效果很好,但在 IE 中它根本不起作用,因为它需要使用下载属性...

然后我尝试了这种方法

     var objArray = [
         { name: "Item 1", color: "Green", size: "X-Large" },
         { name: "Item 2", color: "Green", size: "X-Large" },
         { name: "Item 3", color: "Green", size: "X-Large" }];

    var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;
    var str = '';

    for (var i = 0; i < array.length; i++) {
        var line = '';
        for (var index in array[i]) {
            if (line != '') line += ','

            line += array[i][index];
        }

        str += line + '\r\n';
    }

但是,现在一行的所有数据都在一列中。我需要单独列上的数据。

预期输出(在 Excel 中打开后)

有人知道怎么做吗?

【问题讨论】:

  • 转成JSON再转回来的目的是什么?
  • 嗯,代码工作得很好,据我所知。请注意,您(严格来说)不能依赖对象中属性的顺序。根据数组中每个对象的“生命历史”,您不一定会以相同的顺序获取属性(换句话说,“名称”、“颜色”、“大小”可能会被打乱)。
  • 它会创建一个 csv,这不是问题所在。问题是输出 csv 的格式。我需要将名称放在一列中,将颜色放在第二列中,将大小放在第三列中。 atm他们都在同一列
  • 不是在我运行它时;它们之间有逗号。也许我不知道您所说的“列”是什么意思。那段代码之后的字符串你在做什么?
  • 您应该发布您的预期输出。这个JSFiddle 的输出看起来是正确的 csv

标签: javascript json angularjs internet-explorer export-to-csv


【解决方案1】:

这看起来像一个 Excel 问题。

但是,现在一行的所有数据都在一列中。我需要单独列上的数据...(在 Excel 中打开后)

您正在创建这样的文件: Convert JSON format to CSV format for MS Excel

问题是您的文件没有 csv 扩展名。不要双击文件或让 IE 自动打开它,而是打开 Excel 并选择文件 > 打开。浏览到文件并单击打开。这将调用文本导入向导,您可以在其中指定逗号作为分隔符。

更新
您可以通过在第一行添加“sep=”来告诉 Excel 如何处理文件。在您的代码中,在循环后添加以下行:
str = 'sep=,\r\n' + str;

如果您在记事本中打开文件,它将如下所示:
sep=,
name,color,size
Item 1,Green,X-Large
Item 2,Green,X-Large
Item 3,Green,X-Large

但是,在 Excel 中打开文件时,只会显示标题和数据:

这里是一个演示,来自Joseph Sturtevant's fiddle 发布在the related question 的答案中: http://jsfiddle.net/wittwerj/6JySt/

【讨论】:

  • 他没有创建文件。他正在网页内创建一个 JavaScript 字符串。该字符串采用 CSV 文件的形式。
  • 明白。但他的 cmets 澄清说正在创建一个文件,而 Excel 并未将其作为 CSV 打开。
  • 谢谢!如果你看看我的小提琴:jsfiddle.net/THkAC/3 如果文件在 excel 中打开,我会得到我正在寻找的输出。最后一个问题是它仍然没有 .csv 文件结尾,知道如何解决这个问题吗?
  • 我建议接受这个答案,并发布另一个问题。您可以包含有关您的环境的所有详细信息,并专门询问如何创建具有 CSV 扩展名的文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-10
  • 1970-01-01
  • 2020-10-21
  • 1970-01-01
  • 2011-06-16
相关资源
最近更新 更多