首页 > 解决方案 > 下载/保存 CSV 文件 - PapaParse

问题描述

问题:
下载的 CSV 文件为空白(unparse()将数组/JSON 转换为 CSV 的方法)。

详细信息:
将 CSV 文件解析为 JavaScript 数组时,Papaparse 工作正常。但是当我将该数组数据或 JSON 数据提供给unparse()方法时,它不起作用。

角度 JS 方法:

$scope.downloadCSV = function(){
    var csv = Papa.unparse($scope.final_array);
    console.log($scope.final_array);
    console.log(csv);
    var csvData = new Blob([csv], {type: 'text/csv;charset=utf-8;'});
    var csvURL =  null;
    if (navigator.msSaveBlob) {
        csvURL = navigator.msSaveBlob(csvData, 'download.csv');
    } else {
        csvURL = window.URL.createObjectURL(csvData);
    }
    var tempLink = document.createElement('a');
    tempLink.href = csvURL;
    tempLink.setAttribute('download', 'download.csv');
    tempLink.click();
}

$scope.final_array包含以下数据:

在此处输入图像描述

在上面的代码中,console.log(csv);控制台上显示为空白。

简而言之:var csv = Papa.unparse($scope.final_array);不工作。

更新
发布的数组帮助我生成下表,并且按钮“保存生成的 CSV ”不起作用,发布的代码用于此操作按钮。 在此处输入图像描述

标签: javascriptarrayspapaparse

解决方案


您的错误:如果我们查看您的控制台屏幕截图,我们会发现您的数组代码中有一些来自数组和对象的混杂。在您的代码中,您有一些这样的:

var array =
[
    [question1: "A", question2: "A"],
    [question1: "A B", question2: "B"]
];

但这是不正确的,必须是这样的:

var array =
[
    {question1: "A", question2: "A"},
    {question1: "A B", question2: "B"}
];

你必须纠正它。

工作示例

看到这个Codepen demo,因为 StackOverflow 片段在沙箱中,因此不起作用。

var array =
[
    {
        question1: "А",
        question2: "А",
        question3: "mike",
        question1_A: "TRUE",
        question1_B: "FALSE",
        question1_C: "FALSE",
        question1_D: "FALSE"
    },
    {
        question1: "A В",
        question2: "В",
        question3: "dan",
        question1_A: "TRUE",
        question1_B: "TRUE",
        question1_C: "FALSE",
        question1_D: "FALSE"
    },
    {
        question1: "B C D",
        question2: "А В С",
        question3: "tango",
        question1_A: "FALSE",
        question1_B: "TRUE",
        question1_C: "TRUE",
        question1_D: "TRUE"
    },
    {
        question1: "A D",
        question2: "С",
        question3: "charlie",
        question1_A: "TRUE",
        question1_B: "FALSE",
        question1_C: "FALSE",
        question1_D: "TRUE"
    },
    {
        question1: "В",
        question2: "А",
        question3: "bob",
        question1_A: "FALSE",
        question1_B: "TRUE",
        question1_C: "FALSE",
        question1_D: "FALSE"
    },
    {
        question1: "C D",
        question2: "А",
        question3: "john",
        question1_A: "FALSE",
        question1_B: "FALSE",
        question1_C: "FALSE",
        question1_D: "FALSE"
    }
];


function downloadCSV()
{
    var csv = Papa.unparse(array);

    var csvData = new Blob([csv], {type: 'text/csv;charset=utf-8;'});
    var csvURL =  null;
    if (navigator.msSaveBlob)
    {
        csvURL = navigator.msSaveBlob(csvData, 'download.csv');
    }
    else
    {
        csvURL = window.URL.createObjectURL(csvData);
    }

    var tempLink = document.createElement('a');
    tempLink.href = csvURL;
    tempLink.setAttribute('download', 'download.csv');
    tempLink.click();
}
<script src="https://www.papaparse.com/resources/js/papaparse.js"></script>
<input type="button" value="download CSV" onclick="downloadCSV()">

有关更多信息,请参阅Papaunparse函数的文档。


推荐阅读