二维数组导出为 CSV,数据未显示在 CSV 中,Javascript

Two Dimensional Array Export Into CSV, Data Not Showing in CSV, Javascript

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"]

我已经尝试了下面相关 post 中的所有不同答案,但 none 似乎在 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

对于上述问题,我也尝试了所有其他可能的答案。感谢您的帮助!谢谢!!

这最终对我有用。

'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;