2009-11-02 7 views
8

Comment exporter des données dans mon DataGrid vers un fichier Excel dans Flex?Comment exporter un DataGrid vers un fichier Excel dans Flex?

Quelqu'un peut-il fournir quelques exemples pour cela? Je navigue mais je n'ai pas pu trouver un seul exemple de ce genre.

EDIT

naviguerez beaucoup et trouvé comment convertir des données DataGrid au format csv. Maintenant Comment convertir cela en Excel? Y at-il un moyen de le faire sans utiliser de script de serveur? Ne peut-il pas être fait dans Flex seul?

+0

Quelle est votre technologie côté serveur? –

+0

en utilisant java Servlets en eclipse – Angeline

Répondre

1

Excel lit la table HTML comme une sorte de feuille de calcul. Il suffit de lire la grille ligne par ligne, colonne par colonne et de produire un ensemble de cellules de tableau HTML et de produire un fichier nommé whatever.xls.

+0

Je l'ai créé sous la forme de tables html. Comment produire un fichier Excel? – Angeline

1

Si vous disposez d'un backend de servlet Java, vous pouvez utiliser un servlet pour générer le fichier.

Mon seul Flex -seulement l'idée était de sortir les données CSV dans un popup avec une zone de texte qui pourrait être copiée et collée dans un fichier par l'utilisateur.

3

Il y a as3xls pour vous à write xls file. Il ne supporte qu'une seule feuille (mais je pense que ça va). Mais je pense que l'utilisation de csv ou html comme indiqué par @susichan et @Rafal Ziolkowski sera plus simple si vous n'avez pas besoin d'utiliser des fonctions Excel (comme la formule cellulaire).

Oh, et il y a csvlib pour l'écriture csv. Pour html, faites comme l'écriture XML sera bien.

0

as3xls semble lire, mais bien l'écriture de fichiers Excel est une autre histoire. Il ne peut pas écrire de classeurs multisheet, il [la plupart du temps] ne peut pas lire ses propres fichiers, et quand Excel peut lire ce que as3xls crache, vous devez faire plusieurs sauvegardes pour faire disparaître toute la corruption. Un vrai bummer. Je travaille sur l'utilisation de NativeProcess d'AIR 2.0 pour appeler un script Python pour faire l'écriture et je suppose que je devrais d'abord exporter le DataGrid/ArrayCollection vers CSV ... semble être un long chemin. Je ne peux pas croire qu'il n'y a pas une meilleure option ActionScript pour le nettoyage avec Excel. Est-ce vraiment si rare d'une tâche?

1

Premier Télécharger le fichier SWC du lien suivant

Link

Maintenant, vous devez faire peu de travail suffit de copier ce code et donner les noms de colonnes de façon appropriée.

public function roExport_export_Result(e:ResultEvent):void 
     { 
      if(e.result.length != 0) 
      { 
       btnExportToExcel.enabled = true; 

       var arrExportResult:Array = e.result as Array; 

       xlsFile = new ExcelFile(); 
       var sheet:Sheet = new Sheet(); 

       sheet.resize(arrExportResult.length+1,14); 

       sheet.setCell(0,0,'Id'); 
       sheet.setCell(0,1,'Full Name'); 
       sheet.setCell(0,2,'Gender'); 
       sheet.setCell(0,3,'Birth Date'); 
       sheet.setCell(0,4,'College Name'); 
       sheet.setCell(0,5,'Qualification'); 
       sheet.setCell(0,6,'Email Id'); 
       sheet.setCell(0,7,'Mobile'); 
       sheet.setCell(0,8,'Position Applied For'); 
       sheet.setCell(0,9,'Technology Interested'); 
       sheet.setCell(0,10,'User Name'); 
       sheet.setCell(0,11,'Password'); 
       sheet.setCell(0,12,'Exam Date'); 
       sheet.setCell(0,13,'Percentage'); 
       sheet.setCell(0,14,'IsActive'); 

       for(var i:int=0;i<arrExportResult.length;i++) 
       { 
        sheet.setCell(i+1, 0, arrExportResult[i].Id); 
        sheet.setCell(i+1, 1, arrExportResult[i].FullName); 
        if(arrExportResult[i].Gender == 1) 
        { 
         arrExportResult[i].Gender = "Male" 
        } 
        else 
        { 
         arrExportResult[i].Gender = "Female"; 
        } 
        sheet.setCell(i+1, 2, arrExportResult[i].Gender); 
        var date:String = arrExportResult[i].BirthDate.date.toString(); 
        var month:String = (arrExportResult[i].BirthDate.month + 1).toString(); 
        var year:String = arrExportResult[i].BirthDate.fullYear.toString(); 
        var bDate:String = date + "/" + month + "/" + year; 
        arrExportResult[i].BirthDate = bDate; 
        sheet.setCell(i+1, 3, arrExportResult[i].BirthDate); 
        sheet.setCell(i+1, 4, arrExportResult[i].CollegeId); 
        sheet.setCell(i+1, 5, arrExportResult[i].QualificationId); 
        sheet.setCell(i+1, 6, arrExportResult[i].EmailId); 
        sheet.setCell(i+1, 7, arrExportResult[i].Mobile); 
        sheet.setCell(i+1, 8, arrExportResult[i].PositionName); 
        sheet.setCell(i+1, 9, arrExportResult[i].TechForTraining); 
        sheet.setCell(i+1, 10, arrExportResult[i].UserName); 
        sheet.setCell(i+1, 11, arrExportResult[i].Password); 
        var date:String = arrExportResult[i].CreatedDate.date.toString(); 
        var month:String = (arrExportResult[i].CreatedDate.month + 1).toString(); 
        var year:String = arrExportResult[i].CreatedDate.fullYear.toString(); 
        var hour:String = arrExportResult[i].CreatedDate.hours.toString(); 
        var min:String = arrExportResult[i].CreatedDate.minutes.toString(); 
        var sec:String = arrExportResult[i].CreatedDate.seconds.toString(); 
        var cDate:String = date + "/" + month + "/" + year + " " + hour + ":" + min + ":" + sec; 
        arrExportResult[i].CreatedDate = cDate; 
        sheet.setCell(i+1, 12, arrExportResult[i].CreatedDate); 
        sheet.setCell(i+1, 13, arrExportResult[i].Percentage); 
        sheet.setCell(i+1, 14, arrExportResult[i].IsActive); 
       } 

       dataGridResult.dataProvider = arrExportResult; 

       xlsFile.sheets.addItem(sheet);  
       bytes = xlsFile.saveToByteArray();     
      } 
      else 
      { 
       arrExportResult = new Array(); 
       dataGridResult.dataProvider = arrExportResult; 
       btnExportToExcel.enabled = false; 
       xlsFile = new ExcelFile(); 
       var sheet:Sheet = new Sheet(); 
       Alert.show("No Records Found",parentApplication.alertTitle); 
      } 
     } 
Questions connexes