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

时间:2018-09-21 08:54:55

标签: javascript angular typescript csv

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

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

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

一旦我将所有需要的数据添加到阵列中,就将其写入控制台:

enter image description here 看起来不错...

现在我不想将其转换为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。 enter image description here

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

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

1 个答案:

答案 0 :(得分: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);