Lecture dans un fichier csv en javascript?
[MODIFIER] j'ai résolu le problème en utilisant D3, tant pis merci!
J'ai donc un fichier csv qui ressemble à quelque chose comme ça, et j'ai besoin d'importer un local de fichier csv dans mon code javascript coté client:
"L.Name", "F.Name", "Gender", "School Type", "Subjects"
"Doe", "John", "M", "University", "Chem I, statistics, English, Anatomy"
"Tan", "Betty", "F", "High School", "Algebra I, chem I, English 101"
"Han", "Anna", "F", "University", "PHY 3, Calc 2, anatomy I, spanish 101"
"Hawk", "Alan", "M", "University", "English 101, chem I"
Finalement, j'ai besoin de l'analyser et de sortie, quelque chose comme:
Chem I: 3 (number of people taking each subject)
Spanish 101: 1
Philosophy 204: 0
Mais pour l'instant, je suis bloqué sur l'importation en javascript.
Mon code ressemble à ceci:
<!DOCTYPE html>
<html>
<body>
<h1>Title!</h1>
<p>Please enter the subject(s) that you wish to search for:</p>
<input id="numb" type="text"/>
<button onclick="myFunction()">Click me to see! :) </button>
<script>
function myFunction() {
var splitResearchArea = [];
var textInput = document.getElementById('numb').value;
var splitTextInput = textInput.split(",");
for(var i =0; i<splitTextInput.length; i++) {
var spltResearchArea = splitTextInput[i];
splitResearchArea.push(spltResearchArea);
}
}
J'ai recherché et trouvé quelques liens utiles sur Stackoverflow comme cette, cette, et cette mais je suis nouveau sur le javascript et je ne comprends pas complètement. Dois-je utiliser de l'Ajax? FileReader? jQuery? Quels sont les avantages de l'utilisation de l'un sur l'autre? Et comment voulez-vous mettre en œuvre dans le code?
Mais ouais, je suis confondu, car je suis très nouveau pour javascript, de sorte que toute aide dans la bonne direction serait génial. Merci!!!!!
OriginalL'auteur ocean800 | 2015-04-01
Vous devez vous connecter pour publier un commentaire.
Ici est de savoir comment utiliser le
readAsBinaryString()
de la FileReader API pour charger un fichier local.Fondamentalement, suffit d'écouter événement de changement dans
<input type="file">
et appelez la fonction readFile.jsFiddle
Si vous avez besoin de charger prédéfinis fichiers csv, en fonction de ce que les entrées de l'utilisateur, alors vous pouvez le faire par le biais de l'jquery $.ajax ou vous pouvez inclure les fichiers csv dans votre page html comme
<script type="text/csv">
. C'est sûr, parce que les navigateurs ignorent sans script javascript. Voir cet excellent répondrePour des raisons de sécurité, il n'est pas possible d'en programmant charger les fichiers du système de fichiers local en JS. La seule façon de le faire, c'est comme je l'ai fait: à l'aide d'un
<input type="file">
pour permettre à l'utilisateur être conscient de chargement d'un fichier, que l'utilisateur a sélectionné lui-même. Si cela ne correspond pas à vos besoins, alors vous avez besoin d'un backendMerci, ce lien a été très utile! Alors, afin de faire de cette façon, je dois mettre le contenu de chaque fichier csv dans le document html?
Si vos fichiers csv ne change jamais, alors oui, vous pouvez placer leurs données à l'intérieur des balises de script, ou, plus commodément, en JS tableaux comme
var csv1 = [{ name: "bill", age: 34 }, { name: "ana", age: 44 }, { name: "cory", age: 18}]; var csv2 = [...]
. Ceci est un exemple de csv1 fichier avec 3 lignes et 2 colonnes, le nom et l'âge.OriginalL'auteur Jose Rui Santos
- je utiliser cette bibliothèque à partir de google: https://github.com/evanplaice/jquery-csv/
D'abord - u ont à
et puis guide d'utilisation à partir de la page
JS n'a PAS accès au serveur, que jeter XHR demande, n'oubliez pas de front-end et back-end
Je peux vous aider à travailler avec l'ajax et xhr, si vous avoir de la difficulté avec elle?
Eh bien, oui, lorsque l'utilisateur clique sur le bouton submit du formulaire, je veux script pour charger le fichier csv et ensuite de l'analyser, et de retourner les résultats de la page html. Je ne suis pas sûr si je comprends correctement, désolé.
Depuis cette réponse mentionne jquery-csv, voici la démo qui fait exactement ce que vous décrivez. evanplaice.github.io/jquery-csv/examples/file-handling.html. Pour info, je suis l'auteur de jquery-csv.
OriginalL'auteur Legendary
Il y a autant de façons d'accomplir ce que vous voulez comme vous pouvez l'imaginer.
Si je faisais ça, j'ai peut-être commencer par le fractionnement de la saisie de texte en lignes comme suit:
Ensuite, je voudrais extraire les noms des en-têtes de la première ligne.
Vous avez besoin d'une fonction pour lire les valeurs de chaque ligne.
Prochaine, je serais en boucle sur les lignes restantes et créer un tableau d'objets représentant les valeurs dans les lignes.
Si tout cela fonctionne, vous devez vous retrouver avec un tableau d'objets représentant les valeurs de chaque ligne dans un fichier CSV.
Ci-dessus est une ébauche de ce que le code pourrait ressembler. Je ne l'ai pas testé et ce n'est certainement pas prêt pour la production, mais j'espère que ça vous donne une idée de la façon de faire ce que vous voulez.
J'ai utilisé plusieurs fonctions Javascript. Je suggère à la recherche sur MDN si vous n'êtes pas familier avec eux; ils sont bon à savoir.
Enfin, il y a une bizarrerie étrange en Javascript avec son automatique semi-colon d'insertion (une mauvaise fonction de la langue, de l'OMI). Afin d'éviter les problèmes, ne pas mettre une nouvelle ligne avant une accolade ouvrante.
Toujours écrire
et ne pas écrire
Je voudrais suggèrent en outre que, lorsque vous recherchez ces méthodes, recherche pour le Mozilla Developer Network (MDN) de référence. W3Schools est populaire, mais de savoir pour certains des renseignements inexacts. Recherche Google pour
Javascript [methodname] MDN
. Aussi, veillez à voter les réponses que vous trouvez utiles.J'ai également rédigé un guide du débutant en Javascript qui pourrait vous être utile: danielsadventure.info/Javascript/Javascript.html. Pour cela, j'ai remarquer quelques différences entre Javascript et d'autres langages.
Ce lien a l'air vraiment utile, merci!! Je vais vérifier le MDN.
OriginalL'auteur Daniel Allen Langdon