2016-03-23 4 views
0

Ich versuche gerade, eine Validierung einiger Beschreibungen in Bezug darauf hinzuzufügen, wie ich ein bestimmtes .CSV-Format haben möchte, bevor es mit PapaParse weiter analysiert.Überprüfen Sie, ob CSV-Header übereinstimmen, wenn sie mit dem Parsing übereinstimmen, andernfalls stop

So war meine Idee, die Header ersten und wenn sie auf die folgende gleichsetzen zu überprüfen:

Extension, company, name

Dann weiter Parsen sonst kann ich zurück werfen eine Fehlermeldung, die besagt das Format falsch war.

Das ganze Parsen wird mit PapaParse durchgeführt.

Ave hatte keine Freude mit ihr, aber unten ist die aktuelle Code:

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

Antwort

0

Wenn ich das richtig verstanden, Sie überprüfen möchten, ob die bestimmte Schlüssel in der Kopfzeile vorhanden ist. Um dies mit papa parse zu tun, empfehle ich die Verwendung streaming. In papa parse besteht das Konzept von streaming darin, die Daten zu verarbeiten, während der Parser sie liest.

Grundsätzlich werden Sie nach einem bestimmten Schlüssel im row Objekt suchen, das in der step Funktion zurückgegeben wird. Überprüfen Sie den folgenden Code aus:

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 

     } 

    } 
}); 

Um mehr über das Streaming in Papa analysieren Besuche this. Weitere Informationen zur step-Funktion finden Sie im Konfigurationsabschnitt der documentation.

Ich hoffe, das hilft. Lassen Sie es mich wissen, wenn Sie weitere Fragen haben.

Verwandte Themen