জাভাস্ক্রিপ্ট ব্যবহার করে কী * * CSV ফাইল থেকে ডেটা পড়বেন?


193

আমার সিএসভি ডেটা দেখে মনে হচ্ছে:

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 ....

আপনি কীভাবে এই ডেটা পড়বেন এবং জাভাস্ক্রিপ্ট ব্যবহার করে এই জাতীয় বিন্যাসে রূপান্তর করবেন ?:

[শিরোনাম 1: মান 1_1, শিরোনাম 2: মান 2_1, শিরোনাম 3: মান 3_1, শিরোনাম 4: মান 4_1, শিরোনাম 5: মান5_1], [শিরোনাম 1: মান1_2, শিরোনাম 2: মান 2_2, শিরোনাম 3: মান 3, শিরোনাম 4: মান4_2, শিরোনাম 5: মান5_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>

আপনার সিএসভি ফাইলে লাইন বিরতি ব্যতিরেকে, কোনও জাভাস্ক্রিপ্ট কোডের পক্ষে এটি জানা অসম্ভব যে একটি অ্যারে (বা অবজেক্ট) কোথায় থামে এবং অন্যটি শুরু হয় (যদি না আপনি আগাম জানেন যে সর্বদা ঠিক পাঁচটি শিরোনাম থাকে)। এটি কি কাট-পেস্ট ওভারসাইট ছিল?
ব্লেজমোনজার

হ্যাঁ, আমি আগে থেকেই জানি যে ঠিক পাঁচটি ক্ষেত্র রয়েছে।
মহেশ থুমার

1
পরবর্তী প্রশ্ন: সমাধানে jQuery অনুমোদিত? আপনি ট্যাগটি ব্যবহার করেছেন তবে আপনার নমুনা কোডটি খাঁটি জাভাস্ক্রিপ্ট।
ব্লেজমোনজার

হ্যাঁ, jQuery অনুমোদিত, তাই আমি এটিকে ট্যাগে অন্তর্ভুক্ত করি।
মহেশ থুমার

1
আমি মনে করি না এর ব্যবহার file://...অনুমোদিত হয় XMLHttpRequest
নোয়েল ল্লেভেরেস

উত্তর:


118

দ্রষ্টব্য: পালিয়ে থাকা উদ্ধৃতিগুলির মতো কোনও বৈধ সিএসভি ফাইলে ঘটতে পারে এমন সমস্ত "বিশেষ কেস" সম্পর্কে মনে করিয়ে দেওয়ার আগে আমি এই সমাধানটি করলাম। আমি দ্রুত এবং নোংরা কিছু চান তাদের জন্য আমি আমার উত্তর রেখে দিচ্ছি, তবে আমি যথার্থতার জন্য ইভানের উত্তরটি প্রস্তাব করছি ।


এই data.txtফাইলটি কার্যকর হবে যখন আপনার ফাইলটি কমা-বিচ্ছিন্ন এন্ট্রিগুলির একটি দীর্ঘ স্ট্রিং, কোনও নিউলাইন ছাড়াই:

data.txt:

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

জাভাস্ক্রিপ্ট:

$(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);
}

নিম্নলিখিত কোডটি প্রতিটি সত্য রেকর্ডের মধ্যে লাইনব্রেক সহ "সত্য" সিএসভি ফাইলে কাজ করবে:

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

জাভাস্ক্রিপ্ট:

$(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/


4
যাইহোক, এটি ধরে নিয়েছে যে সিএসভি ফাইলটিতে আসলে একাধিক সারি রয়েছে - এটিই allText.split(/\r\n|\n/)বিভক্ত হয়। যদি আপনার সমস্ত ডেটা আসলে কোনও নতুনলাইন ছাড়াই কমা-বিভাজিত ডেটার এক দীর্ঘ স্ট্রিং হয় তবে এটি আসল সিএসভি ফাইল নয়।
ব্লেজমোনজার

1
হাই আমি এই কোডটি ব্যবহার করেছি: তবে কোনও আউটপুট নেই। কেবল একটি ফাঁকা সতর্কতা প্রদর্শিত হয়েছে। আমার ফাইলটি দেখতে হ'ল: শিরোনাম 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 উভয় সিএসভি এইচটিএমএল এবং ডেটা.টিএসটি একই ফোল্ডারে রয়েছে
মহেশ থুমার

এটি যদি সঠিক ফাইল (বা ডেটা) না হয় তবে আমার ফাইলটি কেমন দেখাচ্ছে ??
মহেশ থুমার

7
কোডটি সমস্ত বৈধ আইইটিএফ স্ট্যান্ডার্ড সিএসভি ফাইলগুলি পরিচালনা করতে পারে না, এবং এম্বেড কমা, লাইন ব্রেক বা ডাবল উদ্ধৃতিযুক্ত স্ট্রিং থাকলে ব্যর্থ হতে পারে। উদাহরণস্বরূপ, 1, "IETF allows ""quotes"", commas and \nline breaks"যেহেতু স্ট্রিংটি ডাবল কোট দিয়ে ঘিরে রয়েছে এবং ডাবল উদ্ধৃতিগুলি এড়ানো যায়।
প্রোটোটাইপ

1
আমি একটি ম্যাক থেকে .csv ফাইল পড়ার চেষ্টা করছিলাম। আমি কেবল তখনই এই স্ক্রিপ্টটিকে নতুন লাইনের চরিত্রগুলি সনাক্ত করতে সক্ষম হয়েছি যখন আমি প্রথম বিভক্তিকে এটিতে পরিবর্তন করেছিলাম এর var allTextLines = allText.split("\r"); পরে এটি দুর্দান্ত কাজ করেছে! ধন্যবাদ!
জো

205

নিজের লেখার দরকার নেই ...

JQuery এর-করা CSV গ্রন্থাগার একটি ফাংশন বলা $.csv.toObjects(csv)যে ম্যাপিং স্বয়ংক্রিয়ভাবে আছে।

দ্রষ্টব্য: গ্রন্থাগারটি এমন কোনও সিএসভি ডেটা হ্যান্ডেল করার জন্য তৈরি করা হয়েছে যা আরএফসি 4180 অনুসারে উপযুক্ত , সবচেয়ে 'সরল' সমাধানগুলিকে অগ্রাহ্য করে এমন সমস্ত কদর্য ধরণের মামলা সহ।

@ ব্লাজমোনজার ইতিমধ্যে বর্ণিত হয়েছে এর মতো, ডেটা বৈধ CSV করার জন্য আপনাকে প্রথমে লাইন ব্রেকগুলি যুক্ত করতে হবে।

নিম্নলিখিত ডেটাসেট ব্যবহার:

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

কোডটি ব্যবহার করুন:

var data = $.csv.toObjects(csv):

'ডেটা' তে সংরক্ষিত আউটপুটটি হ'ল:

[
  { heading1:"value1_1",heading2:"value2_1",heading3:"value3_1",heading4:"value4_1",heading5:"value5_1" } 
  { heading1:"value1_2",heading2:"value2_2",heading3:"value3_2",heading4:"value4_2",heading5:"value5_2" }
]

দ্রষ্টব্য: প্রযুক্তিগতভাবে, আপনি কী-মান মানচিত্রটি লিখেছেন তা অকার্যকর জাভাস্ক্রিপ্ট। কী-মান জোড় যুক্ত বস্তুগুলি বন্ধনীতে আবৃত করা উচিত।

আপনি যদি নিজের চেষ্টা করে দেখতে চান তবে আমি পরামর্শ দিচ্ছি যে আপনি 'টোঅবজেক্টস ()' ট্যাবের অধীনে বুনিয়াদি ব্যবহারের বিক্ষোভটি একবার দেখুন।

দাবি অস্বীকার: আমি jQuery-CSV এর মূল লেখক।

হালনাগাদ:

অপ্সটি সরবরাহ করে এমন ডেটাसेट ব্যবহার করতে সম্পাদিত এবং ডেমোতে একটি লিঙ্ক অন্তর্ভুক্ত যেখানে ডেটা বৈধতার জন্য পরীক্ষা করা যেতে পারে।

Update2:

গুগল কোড বন্ধ করার কারণে। jquery-csv গিটহাবে চলে গেছে


3
আইওডাব্লু, "টোঅজেক্ট" কি "টোজেএসন" হিসাবে ভাবনা যায়, না? এবং, টোঅবজেক্টস (সিএসভি) এর কল অনুসরণকারী কোলন কি টাইপো? আইওউ, সেমিকোলন হওয়া উচিত নয়?
বি ক্লে শ্যানন

11
সিএসভি একটি ফাইলের নাম?
বুদ্বুদ

10
কল্পনাপ্রসূত গ্রন্থাগার। এফওয়াইআই, প্যারামিটারটি csvপাস করা একটি সিএসভি স্ট্রিং - সিএসভি স্ট্রিং পেতে CSV ফাইলটি পাঠ্য হিসাবে পড়ুন।
কলমেকাট্টি

3
@ ইভান প্লেস সিএসভি ফাইল থেকে পড়ার জন্য এই লাইব্রেরিটি কীভাবে ব্যবহার করবেন?
রিচা সিনহা

1
@ রিচসিংহ এইচটিএমএল 5 ফাইল এপিআই বা এজেএক্সের মাধ্যমে টেক্সট বাফার হিসাবে ফাইলটি পড়ুন। তারপরে পার্সারে স্ট্রিং বাফারটি পাস করুন। এটি ফলস্বরূপ ডেটাগুলির একটি অ্যারে ছড়িয়ে দেবে। উদাহরণস্বরূপ প্রকল্প পৃষ্ঠা দেখুন।
ইভান প্লেইস

75

কমাতে বিভক্ত হবেন না - এটি বেশিরভাগ সিএসভি ফাইলের জন্য কাজ করবে না এবং এই প্রশ্নটিতে প্রত্যেকের জন্য প্রযোজকের ধরণের ইনপুট ডেটার জন্য প্রযোজ্য for সত্যিকার অর্থে কোনও সরকারী স্ট্যান্ডার্ড না থাকায় CSV পার্স করা এক ধরণের ভয়ঙ্কর এবং প্রচুর সীমযুক্ত পাঠ্য লেখক প্রান্তের মামলাগুলি বিবেচনা করে না।

এই প্রশ্নটি পুরানো, তবে আমি বিশ্বাস করি যে এখন আরও ভাল সমাধান পাপা পার্সে উপলব্ধ। এটি একটি লাইব্রেরি যা আমি লিখেছিলাম, অনুদানকারীদের সহায়তায়, যা সিএসভি পাঠ্য বা ফাইলগুলি পার্স করে। এটি আমার জানা একমাত্র জেএস লাইব্রেরি যা ফাইলগুলি গিগাবাইট আকারে সমর্থন করে। এটি কৃপণভাবে ম্যালার্মেড ইনপুট পরিচালনা করে।

1 মিনিটে 1 জিবি ফাইল পার্স করা হয়েছে: 1 মিনিটে 1 জিবি ফাইল পার্স করা হয়েছে

( আপডেট: পাপা পার্স 4 এর সাথে একই ফাইলটি ফায়ারফক্সে প্রায় 30 সেকেন্ড সময় নিয়েছিল Pap পাপা পার্স 4 এখন ব্রাউজারের জন্য সর্বাধিক পরিচিত সিএসভি পার্সার )

পাঠ্যকে পার্স করা খুব সহজ:

var data = Papa.parse(csvString);

ফাইলগুলি পার্সিং করাও সহজ:

Papa.parse(file, {
    complete: function(results) {
        console.log(results);
    }
});

স্ট্রিমিং ফাইলগুলি একই রকম (এখানে একটি উদাহরণ যা দূরবর্তী ফাইলকে প্রবাহিত করে):

Papa.parse("http://example.com/bigfoo.csv", {
    download: true,
    step: function(row) {
        console.log("Row:", row.data);
    },
    complete: function() {
        console.log("All done!");
    }
});

পার্সিংয়ের সময় যদি আপনার ওয়েব পৃষ্ঠাটি লক হয়ে থাকে তবে পাপা আপনার ওয়েব সাইটটিকে প্রতিক্রিয়াশীল রাখতে ওয়েব কর্মীদের ব্যবহার করতে পারে।

পাপা যদি শিরোনাম সারি উপস্থিত থাকে তবে শিরোনাম কলামগুলির সাথে ডিলিমিটারগুলিকে স্বতঃ-সনাক্তকরণ এবং মানগুলি মিলিয়ে নিতে পারে। এটি সংখ্যার মানগুলিকে আসল সংখ্যার প্রকারে রূপান্তর করতে পারে। এটি যথাযথভাবে লাইন ব্রেক এবং কোটগুলি এবং অন্যান্য উদ্ভট পরিস্থিতিতে পার্স করে এবং এমনকি বিকৃত ইনপুটটিকে যতটা সম্ভব শক্তিশালীভাবে পরিচালনা করে। আমি পাপা তৈরির জন্য বিদ্যমান লাইব্রেরিগুলি থেকে অনুপ্রেরণা নিয়েছি, তাই অন্য জেএস বাস্তবায়নের প্রপস।


পাপা ব্যবহার করা সহজ এবং দ্রুত! ধন্যবাদ!
টেকনোট্রনিক

+1 পাপা পার্সে ভাল কাজ। আপনি কীভাবে বড় বড় ফাইল এবং স্ট্রিমিং পরিচালনা করেছেন তা দেখতে আমি কোনও দিন এটিকে বিশদভাবে অধ্যয়ন করতে চাই। আমি অন্যান্য বিকাশকারীদের পুরোপুরি বৈশিষ্ট্যযুক্ত পার্সার লিখতে দেখে খুব খুশি হয়েছি যেখানে জ্যাকুয়েরি-সিএসভি ছেড়ে গেছে।
ইভান প্লেইস

3
ধন্যবাদ ইভানপ্লাইস আপনি এই উপস্থাপনাটি পছন্দ করতে পারেন আমি গত রাতে একটি স্থানীয় মিলআপে দিয়েছি: docs.google.com
ম্যাট

1
@ ম্যাট এটি একটি দুর্দান্ত উপস্থাপনা যা পাপা পার্স সম্পর্কে আরও বোঝার উপায়ে বর্ণনা করেছে
শিভা

1
@ মালকি.কিড এটি বৈধ সিএসভি নয় (যেমন একটি সীমানা ছাড়ানো মানের স্থানগুলি ভাল নয়)। এমএস এক্সেলের সিএসভি ফর্ম্যাট বাস্তবায়ন সফল হয়। যদি আপনার এখনও উত্স ফাইলে অ্যাক্সেস থাকে তবে কোট ডিলিটারগুলিকে সক্ষম করার জন্য একটি বিকল্প থাকা উচিত। একবার আপনি এটি করেন, আপনার ডেটা যে কোনও সিএসভি পার্সারের সাথে কাজ করা উচিত।
ইভান প্লেস

9

আমি সিএসভি ফাইল পার্সিংয়ের জন্য d3.js ব্যবহার করছি । ব্যবহার করা খুব সহজ। এখানে ডক্স রয়েছে

পদক্ষেপ:

  • এনপিএম ডি 3-অনুরোধ ইনস্টল করুন

এস 6 ব্যবহার করে;

import { csv } from 'd3-request';
import url from 'path/to/data.csv';

csv(url, function(err, data) {
 console.log(data);
})

আরও জন্য ডক্স দেখুন।

আপডেট - d3- অনুরোধ হ্রাস করা হয়েছে। আপনি d3-আনতে ব্যবহার করতে পারেন


4

আপনি সাহায্য করতে পাপাপার্স ব্যবহার করতে পারেন। https://www.papaparse.com/

এখানে একটি কোডপেন রয়েছে। https://codepen.io/sandro-wiggers/pen/VxrxNJ

Papa.parse(e, {
            header:true,
            before: function(file, inputElem){ console.log('Attempting to Parse...')},
            error: function(err, file, inputElem, reason){ console.log(err); },
            complete: function(results, file){ $.PAYLOAD = results; }
        });

3

এখানে একটি জাভাস্ক্রিপ্ট ফাংশন যা সিএসভি ডেটা পার্স করে, কোটের ভিতরে থাকা কমাগুলির জন্য অ্যাকাউন্টিং।

// Parse a CSV row, accounting for commas inside quotes                   
function parse(row){
  var insideQuote = false,                                             
      entries = [],                                                    
      entry = [];
  row.split('').forEach(function (character) {                         
    if(character === '"') {
      insideQuote = !insideQuote;                                      
    } else {
      if(character == "," && !insideQuote) {                           
        entries.push(entry.join(''));                                  
        entry = [];                                                    
      } else {
        entry.push(character);                                         
      }                                                                
    }                                                                  
  });
  entries.push(entry.join(''));                                        
  return entries;                                                      
}

সিএসভি ফাইলটিকে পার্স করার জন্য ফাংশনটির উদাহরণ যা দেখে মনে হচ্ছে:

"foo, the column",bar
2,3
"4, the value",5

অ্যারেতে:

// csv could contain the content read from a csv file
var csv = '"foo, the column",bar\n2,3\n"4, the value",5',

    // Split the input into lines
    lines = csv.split('\n'),

    // Extract column names from the first line
    columnNamesLine = lines[0],
    columnNames = parse(columnNamesLine),

    // Extract data from subsequent lines
    dataLines = lines.slice(1),
    data = dataLines.map(parse);

// Prints ["foo, the column","bar"]
console.log(JSON.stringify(columnNames));

// Prints [["2","3"],["4, the value","5"]]
console.log(JSON.stringify(data));

আপনি কীভাবে ডেটাগুলিকে ডিটেইসগুলিতে রূপান্তর করতে পারবেন, যেমন ডি 3 এর সিএসভি পার্সার (যা একটি শক্ত তৃতীয় পক্ষের সমাধান):

var dataObjects = data.map(function (arr) {
  var dataObject = {};
  columnNames.forEach(function(columnName, i){
    dataObject[columnName] = arr[i];
  });
  return dataObject;
});

// Prints [{"foo":"2","bar":"3"},{"foo":"4","bar":"5"}]
console.log(JSON.stringify(dataObjects));

এই কোডটির একটি কার্যকারী ফিডল এখানে ।

উপভোগ করুন! - কুরান


1

জাভাস্ক্রিপ্টে একটি বাহ্যিক সিএসভি পড়ার আরও একটি উপায় এখানে (jQuery ব্যবহার করে)।

এটি কিছুটা বেশি দীর্ঘ বায়ুযুক্ত, তবে অ্যারেতে ডেটা পড়ে আপনি অনুভব করেন যে আপনি প্রক্রিয়াটি যথাযথভাবে অনুসরণ করতে পারেন এবং সহজ সমস্যা সমাধানের জন্য তৈরি করেছেন।

অন্য কাউকে সাহায্য করতে পারে।

ডেটা ফাইল উদাহরণ:

Time,data1,data2,data2
08/11/2015 07:30:16,602,0.009,321

এবং এখানে কোড:

$(document).ready(function() {
 // AJAX in the data file
    $.ajax({
        type: "GET",
        url: "data.csv",
        dataType: "text",
        success: function(data) {processData(data);}
        });

    // Let's process the data from the data file
    function processData(data) {
        var lines = data.split(/\r\n|\n/);

        //Set up the data arrays
        var time = [];
        var data1 = [];
        var data2 = [];
        var data3 = [];

        var headings = lines[0].split(','); // Splice up the first row to get the headings

        for (var j=1; j<lines.length; j++) {
        var values = lines[j].split(','); // Split up the comma seperated values
           // We read the key,1st, 2nd and 3rd rows 
           time.push(values[0]); // Read in as string
           // Recommended to read in as float, since we'll be doing some operations on this later.
           data1.push(parseFloat(values[1])); 
           data2.push(parseFloat(values[2]));
           data3.push(parseFloat(values[3]));

        }

    // For display
    var x= 0;
    console.log(headings[0]+" : "+time[x]+headings[1]+" : "+data1[x]+headings[2]+" : "+data2[x]+headings[4]+" : "+data2[x]);
    }
})

আশা করি এটি ভবিষ্যতে কাউকে সহায়তা করবে!


ভবিষ্যতে হ্যালো, সুতরাং আমি এই উত্তরটি চেষ্টা করে দেখলাম এবং এটি )45 নম্বর লাইনে একটি চিহ্ন হারিয়েছে তাই আমি এটি যুক্ত করেছি, তবে 9 নং লাইনে এটি আমাকে একটি কনসোল ত্রুটি দিচ্ছে Uncaught ReferenceError: $ is not defined at index.html:9আপনি কি এতে সহায়তা করতে পারেন?
লাসাগনা বিড়াল

1
function CSVParse(csvFile)
{
    this.rows = [];

    var fieldRegEx = new RegExp('(?:\s*"((?:""|[^"])*)"\s*|\s*((?:""|[^",\r\n])*(?:""|[^"\s,\r\n]))?\s*)(,|[\r\n]+|$)', "g");   
    var row = [];
    var currMatch = null;

    while (currMatch = fieldRegEx.exec(this.csvFile))
    {
        row.push([currMatch[1], currMatch[2]].join('')); // concatenate with potential nulls

        if (currMatch[3] != ',')
        {
            this.rows.push(row);
            row = [];
        }

        if (currMatch[3].length == 0)
            break;
    }
}

আমি যতটা সম্ভব রেইজেক্সটি করতে চাই। এই রেজেক্স সমস্ত আইটেমকে হয় উদ্ধৃত বা উদ্ধৃত হিসাবে অনুসরণ করবে, তারপরে কলাম ডিলিমিটার বা একটি সারি ডিলিমিটার। বা পাঠ্যের সমাপ্তি।

সেই কারণেই কেন এটি শেষ শর্ত - এটি ছাড়াই এটি একটি অসীম লুপ হতে পারে কারণ প্যাটার্নটি শূন্য দৈর্ঘ্যের ক্ষেত্রের সাথে মিলিত করতে পারে (সিএসভিতে সম্পূর্ণ বৈধ)। তবে যেহেতু $ শূন্য দৈর্ঘ্যের জোর, তাই এটি কোনও মিল নেই এবং লুপটি শেষ করবে না।

এবং এফওয়াইআই, আমাকে দ্বিতীয়টি বিকল্প বাদ দিয়ে মানটি বাদ দিতে হয়েছিল; দেখে মনে হচ্ছে এটি আমার জাভাস্ক্রিপ্ট ইঞ্জিনে প্রথম বিকল্পের আগে কার্যকর করা হয়েছিল এবং উদ্ধৃত মানের অংশ হিসাবে উদ্ধৃতিগুলি বিবেচনা করছে। আমি জিজ্ঞাসা করব না - কেবল এটি কাজ করতে পেয়েছে।


দুর্ভাগ্যক্রমে আমি এই ফাংশনটি দিয়ে অসীম লুপটিতে gotুকেছি।
হউকে

@ হউক - আপনি যদি এমন কিছু কলাম এবং লাইনগুলিকে এখনও অবিরাম লুপ তৈরি করে ডেটা ভাঙতে পারেন তবে আমি এটির প্রশংসা করব - এটি আমাকে কেন আগে ব্যর্থ হচ্ছিল তা সম্পর্কে অন্তর্দৃষ্টি দিতে পারে।
জেরার্ড ওনিল

1

প্রতি গৃহীত উত্তর ,

আমি এখানে 1 এ 0 তে পরিবর্তন করে কাজ করতে পেরেছি:

for (var i=1; i<allTextLines.length; i++) {

পরিবর্তন

for (var i=0; i<allTextLines.length; i++) {

এটি একটি অবিচ্ছিন্ন রেখার সাথে একটি ফাইলকে 1 এর allTextLines.length বলে গণনা করবে So সুতরাং লুপটি যদি 1 থেকে শুরু হয় এবং এটি 1 এরও কম স্থায়ী হয় তবে এটি কখনই চলবে না। সুতরাং ফাঁকা সতর্কতা বাক্স।


0

আপনি যদি আজাক্স ব্যবহার না করে এটি সমাধান করতে চান তবে FileReader()ওয়েব এপিআই ব্যবহার করুন ।

বাস্তবায়ন উদাহরণ:

  1. .csvফাইল নির্বাচন করুন
  2. আউটপুট দেখুন

function readSingleFile(e) {
  var file = e.target.files[0];
  if (!file) {
    return;
  }

  var reader = new FileReader();
  reader.onload = function(e) {
    var contents = e.target.result;
    displayContents(contents);
    displayParsed(contents);
  };
  reader.readAsText(file);
}

function displayContents(contents) {
  var element = document.getElementById('file-content');
  element.textContent = contents;
}

function displayParsed(contents) {
  const element = document.getElementById('file-parsed');
  const json = contents.split(',');
  element.textContent = JSON.stringify(json);
}

document.getElementById('file-input').addEventListener('change', readSingleFile, false);
<input type="file" id="file-input" />

<h3>Raw contents of the file:</h3>
<pre id="file-content">No data yet.</pre>

<h3>Parsed file contents:</h3>
<pre id="file-parsed">No data yet.</pre>


0
$(function() {

      $("#upload").bind("click", function() {
            var regex = /^([a-zA-Z0-9\s_\\.\-:])+(.csv|.xlsx)$/;
            if (regex.test($("#fileUpload").val().toLowerCase())) {
              if (typeof(FileReader) != "undefined") {
                var reader = new FileReader();
                reader.onload = function(e) {
                    var customers = new Array();
                    var rows = e.target.result.split("\r\n");
                    for (var i = 0; i < rows.length - 1; i++) {
                      var cells = rows[i].split(",");
                      if (cells[0] == "" || cells[0] == undefined) {
                        var s = customers[customers.length - 1];
                        s.Ord.push(cells[2]);
                      } else {
                        var dt = customers.find(x => x.Number === cells[0]);
                        if (dt == undefined) {
                          if (cells.length > 1) {
                            var customer = {};
                            customer.Number = cells[0];
                            customer.Name = cells[1];
                            customer.Ord = new Array();

                            customer.Ord.push(cells[2]);
                            customer.Point_ID = cells[3];
                            customer.Point_Name = cells[4];
                            customer.Point_Type = cells[5];
                            customer.Set_ORD = cells[6];
                            customers.push(customer);
                          }
                        } else {
                          var dtt = dt;
                          dtt.Ord.push(cells[2]);

                        }
                      }
                    }

এই কোডটি কীভাবে এবং কেন সমস্যার সমাধান করে তার ব্যাখ্যা সহ প্রশ্নটি সমাধান করতে পারে যদিও আপনার পোস্টের মান উন্নত করতে সত্যিই সহায়তা করবে এবং সম্ভবত আরও বেশি ভোটের ফলাফল হবে। মনে রাখবেন যে আপনি ভবিষ্যতে পাঠকদের জন্য প্রশ্নের উত্তর দিচ্ছেন, কেবল এখনই জিজ্ঞাসা করা ব্যক্তি নয়। দয়া করে সম্পাদনা ব্যাখ্যা যোগ করতে পারেন এবং সীমাবদ্ধতা এবং অনুমানের কি প্রয়োগ একটি ইঙ্গিত দিতে আপনার উত্তর। পর্যালোচনা থেকে
ডাবল-বীপ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.