2016-03-23 4 views
0

'u durdurun. Belirli bir .CSV biçiminin, PapaParse kullanarak ayrıştırma işlemine devam etmeden önce nasıl bir açıklama istediğiyle ilgili olarak bazı açıklamaların bazı doğrulamasını eklemeye çalışıyorum. CSV başlıklarının eşleşip eşleşmediğini kontrol edin, eşleşmeye devam ediyorlarsa, aksi halde

Yani benim fikri ilk başlıklarını kontrol etmek ve onlar aşağıdaki denk eğer:

Extension, company, name

Sonra aksi geri biçimi yanlış olduğunu bildiren bir hata iletisi atabilir ayrıştırma devam ediyor.

Tüm ayrıştırma, PapaParse kullanılarak yapılır.

Ave onunla hiçbir sevinç vardı ama şimdiki kodudur:

var result = []; 

$("#CSV-Upload").click(function() { 
     $("input[type=file]").parse({ 
      config : { 
       header : true, 
       skipEmptyLines : true, 
       complete : function (results, file) { 
        console.log("This file done:", file, results); 
        var string = JSON.stringify(results['data']); 
        result.push(string); 
        console.log("CSV Array: " + string); 
       } 
      }, 
      complete : function() { 
       console.log("All files done!"); 
      } 
     }); 
     $("#csv-file").val(''); 
    }); 

cevap

0

ben bazı kilit başlığındaki mevcut olup olmadığını kontrol etmek istiyorsanız doğru anlamak. Bunu papa ayrıştırma kullanarak yapmak için streaming kullanmanızı öneririz. Papa ayrıştırmasında streaming kavramı, ayrıştırıcıyı okuduğunda verileri işlemektir.

Temel olarak, step işlevinde döndürülen row nesnesindeki belirli anahtarı denetlersiniz. Aşağıdaki kodu göz atın:

var allKeyPresent = false; // Flag 

Papa.parse(file, { 
    header : true, 
    skipEmptyLines : true, 
    step: function(row, parser){ 
     if (!allKeyPresent) { //Only chek if flag is not set, i.e, for the first time 
      parser.pause(); // pause the parser 
      var first_row_data = row.data[0]; 
      // Now check object keys, if it match 
      if (('Extension' in first_row_data) && ('name' in first_row_data) && ('email' in first_row_data)) { 
       //every required key is present 
       allKeyPresent = true; 

       // Do your data processing here 

       parser.resume(); 
      } else{ 
       //some key is missing, abort parsing 
       parser.abort(); 
      } 

     } else{ // we already match the header, all required key is present 

      // Do the Data processing here 

     } 

    } 
}); 

this kontrol ayrıştırmak papa içinde akışı hakkında daha fazla bilgi için. Ayrıca, documentation'un yapılandırma açıklamasında step işlevi hakkında daha fazla bilgi edinin.

Umarım bu yardımcı olur. Başka bir alakalı sorgunuz varsa lütfen bize bildirin.