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!
Version imprimable
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)
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 .csvCode:
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:
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çantCode:
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"); } });
parCode:params: {data: data }
et aussi dans ma route en remplaçantCode:params: {data: JSON.stringify(data)}
parCode: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 plaitCode: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:
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" }); //~ });