繁体   English   中英

如何使用FileSaver.js在AngularJS中创建和下载CSV文件

[英]How to create and download a CSVfile in AngularJS using FileSaver.js

我正在尝试创建一个csv文件,并使用FileSaver.js下载它,但是在执行过程中遇到了问题。

到目前为止,这里是AngularJS控制器的代码:

$scope.Export = function () {
    var blob = new Blob([$scope.Data], {
        type: "text/csv;charset=utf-8"
    });
    saveAs(blob, "users.csv");
};

$ scope.Data具有以下形式:

在此处输入图片说明

但是我最终与

[对象对象],[对象对象],[对象对象],[对象对象],[对象对象],[对象对象],[对象对象],[对象对象],[对象对象],[对象对象]

我不想通过遍历数组来构造csv,或者创建html表然后调用其innerHTML函数。 那么,我该怎么做?

看一下这个例子

我试图通过编写insertCommaForCSV来概括它,它可以为CSV插入逗号。 另外,您可以传递一个可配置的标头对象。主要逻辑位于:

function initiateDownload(data, fileName) {
    const csvStr = insertCommaForCSV(data);
    const blob = new Blob([csvStr], { type: 'text/csv;charset=utf-8;' });
    if (navigator.msSaveBlob) {
        // IE 10+
        navigator.msSaveBlob(blob, fileName + '.csv');
    } else {
        const link = document.createElement('a');
        if (link.download !== undefined) {
            // feature detection
            // Browsers that support HTML5 download attribute
            const url = URL.createObjectURL(blob);
            link.setAttribute('href', url);
            link.setAttribute('download', fileName + '.csv');
            link.style.visibility = 'hidden';
            document.body.appendChild(link);
            link.click();
            document.body.removeChild(link);
        }
    }
  }

确保为此创建一个指令,以便它也可以在其他地方重用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM