Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将CSV解析为JavaScript并使用一种VLOOKUP_Javascript_Csv - Fatal编程技术网

将CSV解析为JavaScript并使用一种VLOOKUP

将CSV解析为JavaScript并使用一种VLOOKUP,javascript,csv,Javascript,Csv,我有一个选择框,它只向函数发送值。函数然后得到一个数字1-100。我有一个100行5列的CSV文件。我想创建一个函数,它将根据选择框先前发送给该函数中4个不同变量的行号来解析第4-5列中的值。你能告诉我需要用什么来实现这一点吗 让我们假设CSV看起来像 1, Robert, Lee, robert@mymail.com, 100001 2, John, Smith, john@mymail.com, 10002 3, Scott, Jones, scott@mymail.com, 10003 4

我有一个选择框,它只向函数发送值。函数然后得到一个数字1-100。我有一个100行5列的CSV文件。我想创建一个函数,它将根据选择框先前发送给该函数中4个不同变量的行号来解析第4-5列中的值。你能告诉我需要用什么来实现这一点吗

让我们假设CSV看起来像

1, Robert, Lee, robert@mymail.com, 100001
2, John, Smith, john@mymail.com, 10002
3, Scott, Jones, scott@mymail.com, 10003
4, etc.
所以当我从下拉菜单中选择1时。 我应该得到“罗伯特”,“李”robert@mymail.com“,”100001“分配给变量,如

var firstname = 
var lastname =
var email =
var idn =
第一次评论后更新:

让我们简化一下

假设我有HTML

<button id="1" onclick="getcolumns(this)">One</button>
<button id="2" onclick="getcolumns(this)">Two</button>
<button id="3" onclick="getcolumns(this)">Three</button>
<button id="4" onclick="getcolumns(this)">Four</button>
<div id="area"></div>
假设我按下按钮“3”,innerHTML显示“3”

我需要基于下图的功能:

function getcolumns(button) {
    [GET File.csv]
    var idm = buttton.id; // lets say idm = 3 at the moment//
    [Parse values from Col2, Col3, Col4, Col5, from ROW(idm)]
    var firstname = col2;
    var lastname = col3;
    var email = col4;
    var idn = col5;
    document.getElementById("area").innerHTML = col2+'<br>'+col3+'<br>'+col4+'<br>'+col5
}
函数getcolumns(按钮){
[获取文件.csv]
var idm=buttton.id;//现在假设idm=3//
[解析来自Col2、Col3、Col4、Col5和ROW的值(idm)]
var firstname=col2;
var lastname=col3;
var=col4;
var-idn=col5;
document.getElementById(“area”).innerHTML=col2+'
'+col3+'
'+col4+'
'+col5 }
所以基本上我会

<div id="area">
 Scott
 Jones
 scott@mymail.com
 10003
</div>

斯科特
琼斯
scott@mymail.com
10003
我使用(警告:此插件有Mac CSV文件的错误。我已将其修复在我的分支中,只需将其上载到github)

HTML 实际处理逻辑以确保选择正确的文件类型。
var handleFileSelect = function(evt) {
    if(evt &&evt.files[0]) {
        var file = evt.files[0];
            if(file.name.split('.').pop() != 'csv' && (
                file.type !== 'text/csv' ||
                file.type !== 'text/comma-separated-values' ||
                file.type !== 'application/csv' ||
                file.type !== 'application/excel' ||
                file.type !== 'application/vnd.ms-excel' ||
                file.type !== 'text/anytext')) {
                    console.log(file.type);
                    importErrorMessage = "Incorrect file type uploaded. We only accept files ending in .csv";
                    resetInput(evt);
                    return;
            }
            var callback = function() {
                resetInput(evt);
                fileUploaded = false;

            }
                updateDom(file, callback);
        }

    };

希望现在更清楚:)你的JavaScript现在看起来像什么?在那里完成了,希望你现在能帮助我。我一直在搜索,很显然,将CSV文件解析为JS函数并不是那么容易。一旦我找到一种可能,我就需要把它放到数组中,然后从数组中读取它。我使用JQuery CSV插件,它非常简单。我将分享我使用的代码。这会将CSV直接解析到数组中吗?因此,当我按下按钮时,这将从中调用变量?谢谢:)虽然我不需要需要需要CSV上传的脚本,但需要一个从URL自动加载CSV的脚本。你喜欢那样的工作吗?”var file=http.open(“GET”、“test.csv”);'我也不需要错误检查,因为我知道CSV将始终保持不变。@Matt您对CSV文件比我更有信心。这不会将CSV文件上载到服务器(实际上,上载是一个误称),因为它只是将CSV文件加载到内存中。要从远程URL读取文件,只需将读取文件的代码部分更改为从远程URL读取。
<input type="file" id="file" name="file" onchange="handleFileSelect()" />
var resetInput = function(inputSelector) {
    $(inputSelector).wrap('<form>').closest('form').get(0).reset();
    $(inputSelector).unwrap();
}
var updateDom = function(file, onError) {
    var reader = new FileReader();
    reader.readAsText(file);
    reader.onload = function(event) {
        var csv = event.target.result;
        var data;
            try {
                data = $.csv.toObjects(csv);
                fileUploaded = true;
            }
            catch(e) {
                importErrorMessage = "Your CSV File could not be imported. The error has been logged. If it's an error we can fix, we will.";
                onError();
                fileUploaded = false;
                console.log(e);
                return;
            }
            csv = {dataRows : data};
            var columns = [];//header row
            for (var prop in data[0])
            {
                columns.push(prop);
            }
            //update dom here
        }
    };
var importErrorMessage = "";
var handleFileSelect = function(evt) {
    if(evt &&evt.files[0]) {
        var file = evt.files[0];
            if(file.name.split('.').pop() != 'csv' && (
                file.type !== 'text/csv' ||
                file.type !== 'text/comma-separated-values' ||
                file.type !== 'application/csv' ||
                file.type !== 'application/excel' ||
                file.type !== 'application/vnd.ms-excel' ||
                file.type !== 'text/anytext')) {
                    console.log(file.type);
                    importErrorMessage = "Incorrect file type uploaded. We only accept files ending in .csv";
                    resetInput(evt);
                    return;
            }
            var callback = function() {
                resetInput(evt);
                fileUploaded = false;

            }
                updateDom(file, callback);
        }

    };