Bonjour tout le monde,
je suis débutante en javascript, j'utilise nodejs et Extjs, et je voudrais exporter des données de ma grid en fichier .csv sauf que je ne sais pas comment le faire en javascript, quelqu'un pourrait-il m'aider?
merci d'avance!
Discussion :








Bonjour tout le monde,
je suis débutante en javascript, j'utilise nodejs et Extjs, et je voudrais exporter des données de ma grid en fichier .csv sauf que je ne sais pas comment le faire en javascript, quelqu'un pourrait-il m'aider?
merci d'avance!










pas en js ...
enfin pas seulement. js te permettra de recupérer les données à envoyer au serveur.
Il te faut un langage derrière pour retourner le fichier au format csv en force download, à moins que tu ne sois dans une configuration locale qui te permette de passer par des activeX comme fso (VBScript)
Ma page Developpez - Mon Blog Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag![]()
Venez sur le Chat de Développez !








d'accord, déjà là j'essaie avec Ext.Ajax.request en appelant une route qui va donc se chargrer de faire l'export en lui passant les données de la grid comme paramètre mais je n'arrive pas à récupérer les données qui sont affichées dans ma grid








bon voilà j'ai trouvé une solution pour récuperer les données affichées dans ma grid
avec ça je recupère bien les données de ma grid que j'envoie à ma route pour exporter dans un fichier .csv
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 var data = []; for (var i = 0; i < grid.getStore().data.length; i++) { var record = grid.getStore().getAt(i); data.push(record.data); }
code de ma route:
le problème avec ce code c'est que filename est undefined sinon il me crée bien un ficher.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 app.post("/sandbox/test-export-csv", checkSession, function(req, res) { sys.puts("Serving GET /sandbox/test-export-csv"); var data = req.body.data; data.forEach(function (line){ var filename = line["name"]+'-'+line["environment"]+'-'+line["date"]; fs.writeFile("/data/mesFichiers/csv_temp/"+filename+".csv", line, function(err) { if(err) { console.log(err); } else { console.log("The file was saved!"); } }); }); res.send({ success: 1, result: "The file was saved!" }); });
je ne comprends pas pourquoi il n'arrive pas à les données quelqu'un aurait -il une idée?








voici mon apple de route côté client
en remplaçant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Ext.Ajax.request({ url : "../sandbox/test-export-csv", params: {data: JSON.stringify(data)}, method : 'POST', success : function(response, options) { altao.log("Success export csv"); }, failure : function(response, options) { Ext.Msg.alert("error", response.responseText); altao.log("Error while exporting audit"); } });par
Code : Sélectionner tout - Visualiser dans une fenêtre à part params: {data: data }et aussi dans ma route en remplaçant
Code : Sélectionner tout - Visualiser dans une fenêtre à part params: {data: JSON.stringify(data)}par
Code : Sélectionner tout - Visualiser dans une fenêtre à part var data = req.body.data;j'arrive maintenant à lire les données et filename n'est plus undefined. Mais maintenant mon fichier est bien crée sauf qu'il est vide, "line" que je passe au "fs.writeFile" est en fait un json, il y aurait-il un truc particulier à faire pour que le fichier soit rempli? aidez moi s'il vous plait
Code : Sélectionner tout - Visualiser dans une fenêtre à part var data = JSON.parse(req.body.data);








j'ai trouvé la solution hier, en fait au lieu de passer directement mes << lines >> au writeFile dans ma route, il me fallait le reformater façon csv c'est à dire séparer les champs par un << ; >> et aussi les mettre entre guillemet << " " >> voici le code de ma route ça servira peut être à quelqu'un d'autre enfin je l'espère.
merci à Kenny.kev et SpaceFrog.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 app.post("/sandbox/test-exportAll-csv", checkSession, function(req, res) { sys.puts("Serving GET /sandbox/test-exportAll-csv"); var data = JSON.parse(req.body.data); sys.puts("***data : "+ sys.inspect(data,true,null)); data.forEach(function (line){ var filename = line["name"]+'-'+line["environment"]+'-'+line["date"]; var file = []; var key =''; var val =''; for (i in line){ key = key+'"'+i+'";'; val = val +'"'+line[i]+'";'; }; file = key +'\n'+val; fs.writeFile("/data/fbs/csv_temp/"+filename+".csv", file, function(err) { if(err) { console.log("error: "+err); } else { console.log(filename +" was saved!"); } }); }); res.send({ success: 1, result: "This is a result" }); //~ });![]()
Partager