IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ext JS / Sencha Discussion :

exporter les données d'une grid Ext en fichier .csv en javascript


Sujet :

Ext JS / Sencha

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 72
    Par défaut exporter les données d'une grid Ext en fichier .csv en javascript
    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!

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    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 !

  3. #3
    Membre émérite Avatar de kenny.kev
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    646
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 646
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    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)
    comme SpaceFrog ta dit le js ne permet pas d'écrire pour des raisons de sécurité. Sans langage serveur ton fichier ne se remplira pas.

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 72
    Par défaut
    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

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 72
    Par défaut
    bon voilà j'ai trouvé une solution pour récuperer les données affichées dans ma grid

    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);
    }
    avec ça je recupère bien les données de ma grid que j'envoie à ma route pour exporter dans un fichier .csv
    code de ma route:
    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!"
    		});
        });
    le problème avec ce code c'est que filename est undefined sinon il me crée bien un ficher.
    je ne comprends pas pourquoi il n'arrive pas à les données quelqu'un aurait -il une idée?

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 72
    Par défaut
    voici mon apple de route côté client
    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");
    									}
    								});
    en remplaçant par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    params: {data: JSON.stringify(data)}
    et aussi dans ma route en remplaçant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var data = req.body.data;
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var data = JSON.parse(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

  7. #7
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 72
    Par défaut
    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.
    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"
    		});
    		//~ 
        });
    merci à Kenny.kev et SpaceFrog.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 25/03/2009, 01h43
  2. exporter les données d'une table/vue à un fichier excel
    Par xianxian620 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/12/2008, 20h11
  3. Réponses: 3
    Dernier message: 02/07/2008, 10h44
  4. Réponses: 1
    Dernier message: 26/01/2007, 08h15
  5. exporter les données d'une DB dans un doc. pdf
    Par gagalive dans le forum API standards et tierces
    Réponses: 35
    Dernier message: 15/07/2006, 13h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo