Hello me again.I need ur help. I want to get info from a xls file (excel file) to put them in a datagrid but i dont know why my code doesnt work properly.I just hope u can help me guys, thanks 😄EDIT: I already did it so i leave the code for someone who needs it.<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx"> <fx:Script> <![CDATA[ import com.as3xls.xls.Cell; import com.as3xls.xls.ExcelFile; import com.as3xls.xls.Sheet; import flash.net.FileReference; import flash.utils.ByteArray; import mx.collections.ArrayCollection; private var ef:ExcelFile; private var ba:ByteArray; private var fr:FileReference; private var frSave:FileReference; [Bindable]private var statCollection:ArrayCollection; private function onCreation():void { ef= new ExcelFile(); ba= new ByteArray(); fr= new FileReference(); frSave= new FileReference(); statCollection = new ArrayCollection(); } private function importData(event:MouseEvent):void { fr= new FileReference(); var fileFilter:FileFilter = new FileFilter("Excel (.xls)","*.xls"); fr.addEventListener(Event.SELECT,selectXLS); fr.browse([fileFilter]); } private function selectXLS(event:Event):void { fr = FileReference(event.target); fr.addEventListener(Event.COMPLETE,fileIn); fr.load(); } private function fileIn(event:Event):void { ba = new ByteArray(); ba = fr.data; ef = new ExcelFile(); ef.loadFromByteArray(ba); var sheet:Sheet =ef.sheets[0]; var tCols:int = sheet.cols; var tRows:int = sheet.rows; statuslbl.text = "Sheets:-"+ef.sheets.length + "; Rows:-"+ tRows +"; Colls :-" + tCols; statCollection = new ArrayCollection(); for(var i:int=0;i<=tRows;i++) { var statsEnry:Object = new Object(); statsEnry.eventLabel = sheet.getCell(i,0).value; statsEnry.totalEvent = sheet.getCell(i,1).value; if(statsEnry.EntryLabel !="") statCollection.addItem(statsEnry); } } private function generateXLS(event:MouseEvent):void { var s:Sheet = new Sheet(); s.resize(statCollection.length+1,2); s.setCell(0,0,"Event Label"); s.setCell(0,1,"Total Events"); for(var j:int=0;j<statCollection.length;j++) { s.setCell(j+1,0,statCollection.eventLabel); s.setCell(j+1,1,statCollection.totalEvent); } var fileTosave:ExcelFile = new ExcelFile(); fileTosave.sheets.addItem(s); var fileBytes:ByteArray = fileTosave.saveToByteArray(); frSave = new FileReference(); frSave.save(fileBytes,"New.xls"); statuslbl.text = "File Saved"; } private function generateCSV(event:MouseEvent):void { var csv:String=""; csv +="Event Label," csv +="Total Events\r"; for(var j:int=0;j<statCollection.length;j++) { csv +=statCollection.eventLabel+","; csv +=statCollection.totalEvent+"\r"; } frSave = new FileReference(); frSave.save(csv,"NewCSV.csv"); statuslbl.text = "File Saved"; } ]]> </fx:Script> <fx:Declarations> <mx:SeriesSlide id="seriesSlide" duration="1000" direction="up"/> </fx:Declarations> <s:Button x="10" y="26" width="116" height="26" label="Importar xls" id="importBtn" click="importData(event)"/> <s:Button x="33" y="437" width="107" height="30" id="exportcsvBtn" label="Export csv" click="generateCSV(event)"/> <s:Button x="467" y="438" width="107" height="30" id="exportxlsBtn" label="Export xls" click="generateXLS(event)"/> <s:Label id="statuslbl" x="197" y="30" width="212" height="22"/> <mx:DataGrid id="grid" x="10" y="60" width="593" height="252" editable="true" dragEnabled="true" dropEnabled="true" dataProvider="{statCollection}"> <mx:columns> <mx:DataGridColumn headerText="Event Label" dataField="eventLabel"/> <mx:DataGridColumn headerText="Total Events" dataField="totalEvent"/> </mx:columns> </mx:DataGrid> <mx:PieChart dataProvider="{statCollection}" x="872" y="58" id="eventPieChart" showDataTips="true" width="279" height="254"> <mx:series> <mx:PieSeries field="totalEvent" nameField="eventLabel" labelPosition="inside"/> </mx:series> </mx:PieChart> <mx:Legend dataProvider="{eventPieChart}" labelPlacement="right" x="611" y="62" width="238" height="250"/> </s:Application>