【问题标题】:Blob is appending commas in typescript, when creating csv file在创建 csv 文件时,Blob 在打字稿中附加逗号
【发布时间】:2019-02-25 15:33:51
【问题描述】:

我正在尝试从 Angular 6 Web 应用程序导出数据。

我有一个字符串数组,其中每个字符串都是一个 csv 行,格式如下:

var csvLines = ['val1,val2\n', 'val3,val4\n'...];

将所需的所有数据添加到数组后,我将其写入控制台:

这看起来不错...

现在我不想将其转换为 blob 并将其下载为 .CSV 文件。

下载没问题,但是输出的格式不对。

当我运行以下代码时:

          const blob = new Blob([csvLines], {type: 'text/csv;encoding:utf-8'});
          const reader = new FileReader();
          reader.onload = () => {
            console.log(reader.result);
          };
          reader.readAsText(blob);

我得到了这个输出。

注意除了第一行之外的每一行附加的逗号 - 这弄乱了我的 csv。

谁能告诉我为什么会这样,也许如何禁用逗号附加?

我已尝试使用 text/plain 作为 mimetype 且不使用编码创建 Blob,但仍附加逗号。

【问题讨论】:

标签: javascript angular typescript csv


【解决方案1】:

因为您将csvLines 作为[csvLines] 传递给new Blob(..),所以您传递的是一个包含数组的数组。似乎子数组是使用逗号连接的。 只需使用new Blob(csvLines, { type: 'text/csv;encoding:utf-8' }); 就可以了。

const csvLines = ['val1,val2\n', 'val3,val4\n'];
const blob = new Blob(csvLines, { type: 'text/csv;encoding:utf-8' });
const reader = new FileReader();
reader.onload = () => {
  console.log(reader.result);
};
reader.readAsText(blob);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-31
    • 1970-01-01
    • 1970-01-01
    • 2020-11-30
    • 2021-12-05
    • 2020-06-23
    • 2017-02-09
    • 1970-01-01
    相关资源
    最近更新 更多