Laden der CSV-Datei in jQuery?

8

Ich habe eine CSV-Datei, die ich als Quelldaten für ein jQuery-Flot-Diagramm verwenden möchte.

Sollte ich:

  1. Suchen Sie nach einem jQuery-Plugin, das die CSV-Datei direkt lädt?
  2. Konvertieren Sie die CSV-Datei in JSON und verwenden Sie diese stattdessen?
  3. Etwas völlig anderes machen?

Ich habe nicht viel Glück, ein jQuery-Plugin zu finden, das mit einer externen CSV-Datei umgehen kann, aber vielleicht fehlt mir etwas.

    
Richard 04.10.2011, 21:22
quelle

2 Antworten

5

Verwenden Sie das jQuery CSV-Plugin, um ein Array zu erhalten. Erstellen / sortieren Sie das Array, das Sie für das Diagramm benötigen.

jQuery CSV-Plugin

Es ist mir gerade aufgefallen, dass Sie vielleicht daran denken, eine flache CSV-Datei mit jQuery zu lesen. Das ist nicht möglich. Einen Javascript-Zugang zum Dateisystem zu geben klingt nach einer schrecklichen Idee. Sie können jedoch immer $.get() verwenden, um eine Datei auf einem Server zu laden.

    
Chris G. 04.10.2011, 21:25
quelle
11
___ tag123jquery ___ jQuery ist eine beliebte Cross-Browser-JavaScript-Bibliothek, die das DOM-Traversal (Document Object Model), die Ereignisbehandlung, Animationen und AJAX-Interaktionen erleichtert, indem die Diskrepanzen zwischen Browsern minimiert werden. Eine mit jQuery gekennzeichnete Frage sollte mit jQuery in Zusammenhang stehen, daher sollte jquery von dem fraglichen Code verwendet werden, und mindestens eine jquery-nutzungsbezogene Elemente müssen in der Frage enthalten sein. ___ qstnhdr ___ Laden der CSV-Datei in jQuery? ___ tag123csv ___ Comma-Separated Values ​​oder Character-Separated Values ​​(CSV) ist ein standardmäßiges "Flat File Database" -Format zum Speichern tabellarischer Daten im Klartext, das aus einer optionalen Kopfzeile besteht, in der die durch Kommas, Tabulatoren oder andere Felder abgegrenzten Tabellenfelder aufgeführt sind Trennzeichen, gefolgt von einer oder mehreren Zeilen (durch Zeilentrennung getrennt), die die Tabellensätze als getrennte Listen der Werte darstellen. Newlines und Trennzeichen können in (zitierten) Feldern erscheinen. ___ qstntxt ___

Ich habe eine CSV-Datei, die ich als Quelldaten für ein jQuery-Flot-Diagramm verwenden möchte.

Sollte ich:

  1. Suchen Sie nach einem jQuery-Plugin, das die CSV-Datei direkt lädt?
  2. Konvertieren Sie die CSV-Datei in JSON und verwenden Sie diese stattdessen?
  3. Etwas völlig anderes machen?

Ich habe nicht viel Glück, ein jQuery-Plugin zu finden, das mit einer externen CSV-Datei umgehen kann, aber vielleicht fehlt mir etwas.

    
___ antwort10401182 ___

Kein Server erforderlich ...

Dies kann ohne den Server erreicht werden, wenn Sie ein wenig Einfallsreichtum einsetzen.

Du brauchst 2 Dinge:

Die jquery-csv-Parser-Bibliothek ist auf die Analyse von RFC 4180 -kompatiblen CSVs spezialisiert, mit vielen Funktionen, die über die Umwandlung von CSV hinausgehen Daten in JavaScript-Daten. Für diese Demonstration verwenden wir zwei Funktionen:

Die erste Methode ist toArrays (). Es benötigt eine mehrzeilige CSV-Zeichenfolge und wandelt sie in ein 2D-Array um.

Der zweite ist ein benutzerdefinierter Parser-Hook, der die Ausgabe (die alle Strings darstellt) automatisch in skalare (dh Integer / Float) Daten umwandelt. Grundsätzlich ist es durch die Verwendung eines Funktionsrückrufs möglich, zusätzliche Verarbeitungen in den Parser einzufügen.

Sobald Sie die CSV-Daten einer String-Variablen zugewiesen haben, ist die Umwandlung in JavaScript-Daten sehr einfach.

%Vor%

Das ist alles für den CSV-Parsing-Schritt.

Nun, was Flot erwartet, ist ein Array von 2D-Arrays, wobei jedes 2D-Array ein unabhängiges Dataset enthält.

Um Ihre Daten zu erstellen, erstellen Sie zuerst ein leeres Array:

%Vor%

Dann fügen Sie für jeden Datensatz, den Sie mit CSV generieren, einfach das Datenset zur Sammlung hinzu.

%Vor%

Die Handhabung von Dateien über HTML5 ist ein schwieriges Thema, da asynchrone Rückrufe zum Laden von Dateien verwendet werden. das bedeutet keine Rücksendeaussagen. Um die Dinge einfach zu halten, mache ich das Flot-Plot einfach zu einem globalen Objekt.

Initialisieren Sie zuerst das Diagramm während des $ (document) .ready ():

%Vor%

Hinweis: Ein Dummy-Datenobjekt wird hinzugefügt, damit das Diagramm initialisiert werden kann.

Fügen Sie dann einen Dateihandler hinzu:

%Vor%

Angenommen, dies kann eine oder mehrere CSV-Dateien laden. Dies wird aufgerufen, nachdem Sie Ihre Dateien aus dem Dateidialog ausgewählt haben. Die Daten werden auf leer zurückgesetzt (dh []), weil wir nach jeder Ausführung des Dateidialogs neu beginnen wollen; Andernfalls werden Sie an eine vorherige Datenmenge angefügt.

Dadurch werden die Dateien durchlaufen und flotFileData () für jede Datei aufgerufen, die im Dateidialog ausgewählt wurde.

Hier ist der Code für die Behandlung des offenen Callbacks der Datei:

%Vor%

Dies liest die Datei als Klartext und stellt den Inhalt über event.target.result zur Verfügung. Der CSV-Parser wandelt die CSV in skalare Daten in zweidimensionaler Array-Form um. Um mehrere Datensätze zu stapeln, müssen wir sie an die Daten anhängen, die sich bereits im Plot befinden. Daher müssen wir die vorhandenen Daten zuerst über flot.getData () speichern. Fügen Sie die neuen Daten an, legen Sie sie über flot.setData () fest und zeichnen Sie schließlich das Diagramm neu.

Hinweis: Wenn die Bereiche des Diagramms nicht neu berechnet werden müssen, können Sie den Aufruf flot.setupGrid () überspringen.

Idealerweise sollte das Neuzeichnen nur einmal pro Dateiladephase erfolgen, aber diese Demo wurde noch nicht optimiert. Das heißt, der Graph wird für jede gelesene Datei neu gezeichnet (definitiv nicht ideal).

Wenn Sie es in Aktion sehen möchten, werfen Sie einen Blick auf die Flotdemonstration 'bereitgestellt von der jquery-csv-Projekt. Ich schlage vor, dass Sie versuchen, sowohl die Datensätze analytics1.csv als auch analytics2.csv zu laden, damit Sie sehen können, wie beide Diagramme überlagert sind.

Wenn Sie sich dazu entschließen, die serverseitige Route zum Laden der CSV-Dateien zu verwenden, gibt es auch ein einfacheres Beispiel zum Laden der CSV-Datei aus einem Textfeld.

Disclaimer: Ich bin der Autor von jquery-csv.

Aktualisierung:

Aufgrund der Deaktivierung von Google Code wurde jquery-csv in GitHub verschoben

    
___ answer7654222 ___

Verwenden Sie das jQuery CSV-Plugin, um ein Array zu erhalten. Erstellen / sortieren Sie das Array, das Sie für das Diagramm benötigen.

jQuery CSV-Plugin

Es ist mir gerade aufgefallen, dass Sie vielleicht daran denken, eine flache CSV-Datei mit jQuery zu lesen. Das ist nicht möglich. Einen Javascript-Zugang zum Dateisystem zu geben klingt nach einer schrecklichen Idee. Sie können jedoch immer %code% verwenden, um eine Datei auf einem Server zu laden.

    
___ tag123flot ___ Flot ist eine reine JavaScript-Plot-Bibliothek für jQuery mit dem Fokus auf einfache Bedienung, attraktive Optik und interaktive Funktionen. Es erzeugt grafische Darstellungen von beliebigen Datensätzen auf der Client-Seite. ___
Evan Plaice 01.05.2012 16:52
quelle

Tags und Links