在创建 csv 文件时,Blob 在打字稿中附加逗号

Posted

技术标签:

【中文标题】在创建 csv 文件时,Blob 在打字稿中附加逗号【英文标题】:Blob is appending commas in typescript, when creating csv file 【发布时间】: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,但仍附加逗号。

【问题讨论】:

Convert javascript variable value to csv file的可能重复 【参考方案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);

【讨论】:

以上是关于在创建 csv 文件时,Blob 在打字稿中附加逗号的主要内容,如果未能解决你的问题,请参考以下文章

在打字稿中使用猫鼬填充查询

根据打字稿中的请求参数设置猫鼬的查询过滤器

在打字稿中调试多个文件

如何在打字稿中声明全局变量

地图在打字稿中显示错误

如何在打字稿中解码二进制数据字符串