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

Flex Discussion :

Flex Alimenter un dataProvider à partir d'Excel


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 5
    Par défaut Flex Alimenter un dataProvider à partir d'Excel
    Bonjour,

    Je développe sous Flex Builder 3.

    Ayant longtemps cherché une solution pour alimenter le dataProvider d'un datagrid à partir d'un fichier .xls, je suis bien sûr tombé sur la librairie as3xls (http://code.google.com/p/as3xls/wiki/Tutorial), mais j'ai besoin d'aide pour l'utiliser.

    Quelqu'un pourrait-il expliciter en action script 3 la première étape "1.You need to get the Excel file into a ByteArray of some sort, whether by hook, crook, or Embed."

    D'avance je remercie ceux qui prendront un peu de temps pour m'aider.
    Rémi

  2. #2
    Membre expérimenté Avatar de samy2525
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 259
    Par défaut
    Bonjour, à mon avis il faut le charger en mémoire ton fichier xsl

    en gros tu utilise un FileReference pour choisir ton fichier xsl puis tu charge ton fichier en mémoire avec la méthode load de la classe FileReference à la fin tu as ton fichier xls dans la propriété data du FileReference qui est un BytteArray

    voila

    Bon courage

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 5
    Par défaut
    Citation Envoyé par samy2525 Voir le message
    Bonjour, à mon avis il faut le charger en mémoire ton fichier xsl

    en gros tu utilise un FileReference pour choisir ton fichier xsl puis tu charge ton fichier en mémoire avec la méthode load de la classe FileReference à la fin tu as ton fichier xls dans la propriété data du FileReference qui est un BytteArray

    voila

    Bon courage
    Merci de votre réponse, j'ai essayé de suivre vos indications. Mais j'ai du mal m'y prendre pour charger le fichier excel.
    Quelqu'un peut-il apporter des modifications à mon code?

    Merci d'avance,
    Rémi

    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
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    	<mx:Script>
    		<![CDATA[
    			import com.as3xls.xls.Sheet;
    			import com.as3xls.xls.ExcelFile;
     
    			var fichierexcel:FileReference = new FileReference();
    			//Je charge mon fichier excel qui vient se stocker sous forme binaire (ByteArray) dans la propriété data de FileReference 
    			fichierexcel.load( new URLRequest("bdd.xls"))
     
    			//Je stocke ces données dans la variable myByteArray
    			var myByteArray:ByteArray = fichierexcel.data;		
    			var xls:ExcelFile = new ExcelFile();
    			xls.loadFromByteArray(myByteArray);
     
    			//Je stocke la première cellule de la première colonne dans le Datagrid
    			var sheet:Sheet = xls.sheets[0]
    			var value:String = sheet.getCell(0, 0).value;
    			myDataGrid.dataProvider = sheet.values;
     
    		]]>
    	</mx:Script>
     
    	<mx:DataGrid id="myDataGrid">
     
    	</mx:DataGrid>
    </mx:Application>

  4. #4
    Membre expérimenté Avatar de samy2525
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 259
    Par défaut
    Bonjour je pense que le code suivant n'est pas à la bonne position

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    //Je stocke ces données dans la variable myByteArray
    			var myByteArray:ByteArray = fichierexcel.data;		
    			var xls:ExcelFile = new ExcelFile();
    			xls.loadFromByteArray(myByteArray);
     
    			//Je stocke la première cellule de la première colonne dans le Datagrid
    			var sheet:Sheet = xls.sheets[0]
    			var value:String = sheet.getCell(0, 0).value;
    			myDataGrid.dataProvider = sheet.values;
    il doit être dans le Event qui t'informe que le load est terminé en gros tu dois rajouter un listner sur ton FileReference

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fichierexcel.addEventListener(Event.COMPLETE, loadCompleteHandler);
    fichierexcel.load( new URLRequest("bdd.xls"))
    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
     
    /**
    		 * chargement du fichier en memoire est terminé
    		 */
    		private function loadCompleteHandler(event:Event):void
    		{
    		    var file : FileReference = event.currentTarget as FileReference
     
                       var myByteArray:ByteArray = file.data;		
    			var xls:ExcelFile = new ExcelFile();
    			xls.loadFromByteArray(myByteArray);
     
     
     
    		}
    voila bon courage

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 5
    Par défaut
    Bonjour Samy2525,

    Merci encore pour votre aide.

    J'ai essayé d'appliquer vos suggestions directement, mais j'ai toujours des soucis de compilation.
    Ayant relu le chapitre 14 de "Pratique d'action Script 3" de Thibault IMBERT, j'ai préféré utiliser la classe URLLoader au lieu de FileReference.

    Cela dit, j'ai encore des erreurs de compilation. Notamment "Accès à la propriété non définie fichier excel"

    Mon code est le suivant :
    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
    32
     
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    	<mx:Script>
    		<![CDATA[
    			import com.as3xls.xls.Sheet;
    			import com.as3xls.xls.ExcelFile;
    			import flash.net.URLLoader;
     
    			var fichierexcel:URLLoader = new URLLoader();
    			fichierexcel.dataFormat = URLLoaderDataFormat.BINARY;
    			fichierexcel.load( new URLRequest("bdd.xls"));
    			fichierexcel.addEventListener(Event.COMPLETE, loadCompleteHandler());
    			private function loadCompleteHandler(event:Event):void
    			{
                	var contenu:ByteArray = event.target.data;		
    				var xls:ExcelFile = new ExcelFile();
    				xls.loadFromByteArray(contenu);
    			}
     
    			//Je stocke la première cellule de la première colonne dans le Datagrid
    			var sheet:Sheet = xls.sheets[0]
    			var value:String = sheet.getCell(0, 0).value;
    			myDataGrid.dataProvider = sheet.values;
     
    		]]>
    	</mx:Script>
     
    	<mx:DataGrid id="myDataGrid">
     
    	</mx:DataGrid>
    </mx:Application>
    Est ce que ce code devrait fonctionner sous FB3?

    Merci pour vos réponses,
    Rémi

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Par défaut
    Non, il faut que le code soit inclus dans une fonction !!

Discussions similaires

  1. [XL-2007] Alimenter une combobox a partir feuille excel
    Par debutant vba dans le forum Excel
    Réponses: 0
    Dernier message: 11/02/2013, 20h07
  2. alimenter une table à partir d'un fichier EXCEL
    Par sinoun dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 29/08/2012, 10h38
  3. alimentation de table à partir d'un fichier excel
    Par gwen43 dans le forum Développement de jobs
    Réponses: 12
    Dernier message: 26/08/2010, 15h40
  4. Alimenter un comboxbox à partir d'un fichier Excel
    Par jeremy_d dans le forum Windows Forms
    Réponses: 2
    Dernier message: 13/05/2008, 10h27
  5. Réponses: 2
    Dernier message: 25/04/2008, 13h40

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