【问题标题】:Two Dimensional Array Export Into CSV, Data Not Showing in CSV, Javascript二维数组导出到 CSV,数据不显示在 CSV,Javascript
【发布时间】:2020-11-02 04:44:03
【问题描述】:

csv 文件可以正确下载,但其中没有任何内容。我希望每个新条目在导出之前都位于不同的行上。不知道为什么数据没有在 CSV 中注册,我对此完全没有错误。感谢您的任何帮助。这是一个 chrome 扩展。

var items = []
var rows = []

function myFunction() {
    items.push(document.getElementById('itemid').value);
    items.push(document.getElementById('itemid1').value);
    items.push(document.getElementById('itemid2').value);
    items.push(document.getElementById('itemid3').value);
    console.log(items);
    const arrayToMatrix = (array, columns) => Array(Math.ceil(array.length / columns)).fill('').reduce((acc, cur, index) => {
        return [...acc, [...array].splice(index * columns, columns)]
    }, []);
    const result = arrayToMatrix(items, 4);
    var rows = result;
    console.log(rows);}

document.getElementById('my-Function').onclick = myFunction;

function exportData() {
    let csvContent = "data:text/csv;charset=utf-8,";

    rows.forEach(function(rowArray) {
        let row = rowArray.join(",");
        csvContent += dataString + "\n";
    });
    var encodedUri = encodeURI(csvContent);
    var link = document.createElement("a");
    link.setAttribute("href", encodedUri);
    link.setAttribute("download", "my_data.csv");
    document.body.appendChild(link);
    link.click();}

document.getElementById('export-Data').onclick = exportData;



Array after user input:

Array(4)
0: (4) ["ROW1", "ROW1", "ROW1", "ROW1"]
1: (4) ["ROW2", "ROW2", "ROW2", "ROW2"]
2: (4) ["ROW3", "ROW3", "ROW3", "ROW3"]
3: (4) ["ROW4", "ROW4", "ROW4", "ROW4"]

我在下面的相关帖子中尝试了所有不同的答案,但似乎没有一个在 csv 中注册我的数据:

JavaScript array to CSV

function exportData() {
    rows.forEach(function (infoArray, index) {
        var row = infoArray.join(",");
        rows.push(index == 0 ? "data:text/csv;charset=utf-8," + line : line);
    });
    var csvContent = rows.join("\n");
    var encodedUri = encodeURI(csvContent); ....

这个出于某种原因将我的 html (popup.html) 导出到 csv

How to export JavaScript array info to csv (on client side)?

function exportData() {
    var csvContent = '';
    rows.forEach(function(infoArray, index) {
        dataString = infoArray.join(';');
        csvContent += index < rows.length ? dataString + '\n' : dataString;
    });
    var encodedUri = encodeURI(csvContent);
});

这个也出于某种原因将我的 html (popup.html) 导出到 csv

对于上述问题,我还尝试了所有其他可能的答案。我很感激任何帮助!谢谢!!

【问题讨论】:

    标签: javascript arrays csv google-chrome export-to-csv


    【解决方案1】:

    这最终对我有用。

    'use strict';
    
    var items = []
    var rows = []
    var cols = []
    
    function myFunction() {
        items.push(document.getElementById('itemid').value);
        items.push(document.getElementById('itemid1').value);
        items.push(document.getElementById('itemid2').value);
        items.push(document.getElementById('itemid3').value);
        console.log(items);
        const arrayToMatrix = (array, columns) => Array(Math.ceil(array.length / columns)).fill('').reduce((acc, cur, index) => {
            return [...acc, [...array].splice(index * columns, columns)]
        }, []);
        const result = arrayToMatrix(items, 7);
        rows = result;
        console.log(rows);}
    
    document.getElementById('my-Function').onclick = myFunction;
    
    function exportData() {
        cols.push(rows);
        console.log(cols);
        let csvContent = "data:text/csv;charset=utf-8," 
            + rows.map(e => e.join(",")).join("\n");
    
        var encodedUri = encodeURI(csvContent);
        var link = document.createElement("a");
        link.setAttribute("href", encodedUri);
        link.setAttribute("download", "my_data.csv");
        document.body.appendChild(link);
        link.click();}
    
    document.getElementById('export-Data').onclick = exportData;
    
    

    【讨论】:

      猜你喜欢
      • 2014-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-29
      相关资源
      最近更新 更多