Hi there, I wanted to export data from datagrid to excel but I am having difficulty accessing the datagrid items. Here is what I was trying:<?xml version="1.0" encoding="utf-8"?> <viewer:BaseWidget xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:viewer="com.esri.viewer.*" xmlns:esri="http://www.esri.com/2008/ags" widgetConfigLoaded="init()"> <fx:Script> <![CDATA[ import com.esri.ags.events.QueryEvent; import com.esri.ags.tasks.supportClasses.Query; import com.esri.ags.tasks.supportClasses.StatisticDefinition; import mx.collections.ArrayCollection; import mx.controls.Alert; import mx.events.FlexEvent; import mx.rpc.events.FaultEvent; import com.as3xls.xls.Cell; import com.as3xls.xls.ExcelFile; import com.as3xls.xls.Sheet; import mx.controls.dataGridClasses.DataGridColumn; import mx.collections.ICollectionView; //this function called when the widget's configuration is loaded private function init():void { var query:Query = new Query(); query.where = "1=1"; query.returnGeometry = false; query.outFields = ["STATE_NAME","CountiesPerState","TotalPopulationIn2000"]; queryTask.execute(query); } protected function queryTask_executeCompleteHandler(event:QueryEvent):void { var fields:Array = event.featureSet.fields; var attributes:Array = event.featureSet.attributes; dg.dataProvider = new ArrayCollection(attributes); } protected function esri_faultHandler(event:FaultEvent):void { Alert.show("Error: " + event.fault.faultString, "Error code: " + event.fault.faultCode); } protected function sumLabelFunction(item:Object, column:GridColumn):String { return numberFormatter.format(item["POP_SUM"]); } private function exportToExcel():void { var sheet:Sheet = new Sheet(); sheet.resize((dg.dataProvider as ICollectionView).length + 1, dg.columns.length + 1); for(var i:int = 0; i < dg.columns.length; i++) { var col:DataGridColumn = DataGridColumn(dg.columns); //sheet.setCell(0, i, (dg.columns as DataGridColumn).headerText); } /* var dataProviderCollection:ArrayCollection = rebateByItemDG.dataProvider as ArrayCollection; var rowCount:int = dataProviderCollection.length; sheet.resize(rowCount+4,10); sheet.setCell(0,0,"Name"); sheet.setCell(0,1,"Salary"); sheet.setCell(0,2,"Joining Date"); sheet.setCell(0,3,"Designation"); for(var r:int=0;r<rowCount;r++) { sheet.setCell(r+1,0,String(ItemDGDataProvider.name)); sheet.setCell(r+1,1,String(ItemDGDataProvider.salary)); sheet.setCell(r+1,2,String(ItemDGDataProvider.jDate)); sheet.setCell(r+1,3,String(ItemDGDataProvider.desg)) } var xls:ExcelFile = new ExcelFile(); xls.sheets.addItem(sheet); var bytes: ByteArray = xls.saveToByteArray(); var fr:FileReference = new FileReference(); fr.save(bytes,"SampleExport.xls"); */ } ]]> </fx:Script> <fx:Declarations> <!-- Query Task --> <esri:QueryTask id="queryTask" executeComplete="queryTask_executeCompleteHandler(event)" fault="esri_faultHandler(event)" url="http://it.innovateteam.com/arcgis/rest/services/OTIS/TestWebServiceForQueries/MapServer/1"/> <s:NumberFormatter id="numberFormatter" trailingZeros="false"/> </fx:Declarations> <viewer:WidgetTemplate id="frTable" width="500" height="500"> <viewer:layout> <s:VerticalLayout horizontalAlign="center" verticalAlign="middle"/> </viewer:layout> <s:DataGrid id="dg" width="400" right="20" top="20"> <s:columns> <s:ArrayList> <s:GridColumn dataField="STATE_NAME" headerText="US State"/> <s:GridColumn dataField="CountiesPerState" headerText="No. of counties"/> <s:GridColumn dataField="TotalPopulationIn2000" headerText="Population(2000)"/> </s:ArrayList> </s:columns> </s:DataGrid> <mx:Button id="export_data" label="Export To Excel" click="exportToExcel();" width="100"/> </viewer:WidgetTemplate> </viewer:BaseWidget>
I have commented some code in the function but I guess it does't matter. I keep getting this error on call to exportToExcel function
ReferenceError: Error #1069: Property 0 not found on mx.collections.ArrayList and there is no default value.
at widgets.FrTable::FrTableWidget/exportToExcel()
at widgets.FrTable::FrTableWidget/__export_data_click()
When I trace dg.columns, I can see 3 objects there. Forum gurus please help me out. Thanks.