flex導出excel的前提是需要插件as3xls-1.0.1.swc,下面為大家介紹下具體的實現
需要插件 as3xls-1.0.1.swc 代碼如下: <?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.ExcelFile; import com.as3xls.xls.Sheet; import mx.collections.ArrayCollection; import mx.controls.Alert; import mx.controls.CheckBox; [Bindable] private var dp:Array = [ {studentID:1,name:"2ssdl",gender:"為001",birthday:"4區",className:"5清道夫卻無法"}, {studentID:2,name:"2士大",gender:"1色調",birthday:"4卻",className:"5為去去"}, {studentID:3,name:"2訪問",gender:"1色調",birthday:"飛4",className:"訪問5"}, {studentID:4,name:"訪問2",gender:"0色調",birthday:"4卻",className:"為5"}, {studentID:5,name:"2各位",gender:"0色調",birthday:"4飛",className:"5為"}]; private function onCreate(dg:DataGrid):void { var rowCount:int = dg.dataProvider.length; var colCount:int = dg.columnCount; var sheet:Sheet = new Sheet(); sheet.resize(rowCount+1,colCount); //設置表格的范圍 var fields:Array = new Array();//用來保存字段 for(var i:int=0; i< colCount;i++) { sheet.setCell(0,i,dg.columns[i].headerText.toString());//表格第0行設置字段名 fields.push(dg.columns[i].dataField.toString()); } for(var i:int=0; i< rowCount;i++) { var record:Object =dg.dataProvider[i];//獲取某行 insertRecordInSheet(i+1,sheet,record); } var excelFile:ExcelFile = new ExcelFile();//新建excel文件 excelFile.sheets.addItem(sheet);//把表格添加入excel文件中 var mbytes:ByteArray = excelFile.saveToByteArray(); var file:FileReference = new FileReference(); file.save(mbytes,"測試文件.xls"); // 定死文件名 file.addEventListener(Event.COMPLETE, function (){ Alert.show("保存成功"); }); /**回調函數**/ function insertRecordInSheet(row:int,sheet:Sheet,record:Object):void { for(var c:int; c < colCount; c++) { var i:int = 0; for each(var field:String in fields) { for each (var value:String in record) { /**循環判斷myDg列名域值record[field]與value是否相等**/ if (record[field].toString() == value) /**寫入表格中**/ sheet.setCell(row,i,value); } i++; } } } } ]]> </fx:Script> <fx:Declarations> <!-- 將非可視元素(例如服務、值對象)放在此處 --> </fx:Declarations> <mx:Panel> <mx:Button label="導出" click="onCreate(myDG)"/> <mx:DataGrid id="myDG" width="100%" rowCount="20" dataProvider="{dp}"> <mx:columns> <mx:DataGridColumn headerText="學號" dataField="studentID"/> <mx:DataGridColumn headerText="姓名" dataField="name"/> <mx:DataGridColumn headerText="性別" dataField="gender" width="50"/> <mx:DataGridColumn headerText="生日" dataField="birthday" /> <mx:DataGridColumn headerText="班級" dataField="className"/> </mx:columns> </mx:DataGrid> </mx:Panel> </s:Application>