1. ホーム
  2. ジャバスクリプト

[解決済み] [Solved] javascriptを使用して*.CSVファイルからデータを読み取るには?

2022-04-07 14:58:23

質問

私のcsvデータは次のようなものです。

見出し1,見出し2,見出し3,見出し4,見出し5,値1_1,値2_1,値3_1,値4_1,値5_1,値1_2,値2_2,値3_2,値4_2,値5_2・・・・。

このデータを読み込んで、Javascriptでこのような配列に変換するにはどうすればよいのでしょうか。

<ブロッククオート

[見出し1:値1_1 , 見出し2:値2_1, 見出し3:値3_1, 見出し4 : value4_1, heading5 : value5_1 ],[heading1:value1_2 , 見出し2:値2_2、見出し3:値3_2、見出し4:値4_2、見出し5 : value5_2 ]....

このコードを試しましたが、ダメでした!。

<script type="text/javascript">
    var allText =[];
    var allTextLines = [];
    var Lines = [];

    var txtFile = new XMLHttpRequest();
    txtFile.open("GET", "file://d:/data.txt", true);
    txtFile.onreadystatechange = function()
    {
        allText = txtFile.responseText;
        allTextLines = allText.split(/\r\n|\n/);
    };

    document.write(allTextLines);<br>
    document.write(allText);<br>
    document.write(txtFile);<br>
</script>

解決方法は?

注意事項 この解決策は、エスケープされた引用符のような、有効なCSVファイルで起こりうるすべてのquot;特殊なケース"について思い出す前に考え出したものです。私は、迅速かつ汚い方法を求める人々のために私の答えを残しています。 エヴァンの回答 正確には


このコードは data.txt ファイルはカンマで区切られた一つの長い文字列で、改行もありません。

data.txtです。

 heading1,heading2,heading3,heading4,heading5,value1_1,...,value5_2

javascriptを使用します。

$(document).ready(function() {
    $.ajax({
        type: "GET",
        url: "data.txt",
        dataType: "text",
        success: function(data) {processData(data);}
     });
});

function processData(allText) {
    var record_num = 5;  // or however many elements there are in each row
    var allTextLines = allText.split(/\r\n|\n/);
    var entries = allTextLines[0].split(',');
    var lines = [];

    var headings = entries.splice(0,record_num);
    while (entries.length>0) {
        var tarr = [];
        for (var j=0; j<record_num; j++) {
            tarr.push(headings[j]+":"+entries.shift());
        }
        lines.push(tarr);
    }
    // alert(lines);
}

次のコードは、各レコードセットの間に改行がある "true" CSV ファイルで動作します。

data.txt:

heading1,heading2,heading3,heading4,heading5
value1_1,value2_1,value3_1,value4_1,value5_1
value1_2,value2_2,value3_2,value4_2,value5_2

javascriptを使用します。

$(document).ready(function() {
    $.ajax({
        type: "GET",
        url: "data.txt",
        dataType: "text",
        success: function(data) {processData(data);}
     });
});

function processData(allText) {
    var allTextLines = allText.split(/\r\n|\n/);
    var headers = allTextLines[0].split(',');
    var lines = [];

    for (var i=1; i<allTextLines.length; i++) {
        var data = allTextLines[i].split(',');
        if (data.length == headers.length) {

            var tarr = [];
            for (var j=0; j<headers.length; j++) {
                tarr.push(headers[j]+":"+data[j]);
            }
            lines.push(tarr);
        }
    }
    // alert(lines);
}

http://jsfiddle.net/mblase75/dcqxr/