首页 > 解决方案 > JavaScript CSV 读取行和列并存储在变量中

问题描述

我有一个非常简单的要求,但无法弄清楚如何去做。下面的 Javascript 代码读取一个 CSV 文件并创建一个 HTML 表。我的 CSV 中有以下数据:

Type, Item, Value, Dec, Figure
SUM,ThisItem,ThisValue,2,4
SUM,ThisItem1,ThisValue1,4,5
RCT,ThisItem1,ThisValue1,6,7

如何在下面的代码中插入代码或行,以帮助我将“Type”列值存储在变量中,将“Item”列值存储在变量中等等。例如,如果 Type=="SUM" 然后采取一些行动(例如发送数据或完整的行到表)。我通过添加一些逻辑尝试了几次,但无济于事。

function Upload() {
const columns = [0,1,2,3,4] // represents allowed column 1 and 3 in index form

var fileUpload = document.getElementById("fileUpload");
var regex = /^([a-zA-Z0-9\s_\\.\-:])+(.csv|.txt)$/;
if (regex.test(fileUpload.value.toLowerCase())) {
    if (typeof (FileReader) != "undefined") {
        var reader = new FileReader();
        reader.onload = function (e) {
            var table = document.createElement("table");
            var rows = e.target.result.split("\n");
            for (var i = 0; i < rows.length; i++) { var cells = rows[i].split(","); if (cells.length > 1) {
                    var row = table.insertRow(-1);
                    for (var j = 0; j < cells.length; j++) {
                        // ignore columns that are not allowed
                        if (!columns.includes(j)) {
                          continue
                        }

                        var cell = row.insertCell(-1);
                        cell.innerHTML = cells[j];
                    }
                }
            }
            var dvCSV = document.getElementById("dvCSV");
            dvCSV.innerHTML = "";
            dvCSV.appendChild(table);
        }
        reader.readAsText(fileUpload.files[0]);
    } else {
        alert("This browser does not support HTML5.");
    }
} else {
    alert("Please upload a valid CSV file.");
}

}

标签: javascripthtml

解决方案


cells[j]是您的 CSV 文件中的文本内容,在每次迭代时使用条件来检查您要查找的值是否匹配,如果匹配,则定义您的变量并完成您的行。


推荐阅读