protected function exportToExcel():void
???{
????if(flag == 0){
?????Alert.show("请先点击查询!");
????}else{
????sheet = new Sheet();????????????????
????var dataProviderCollection:ArrayCollection = adg1.dataProvider as ArrayCollection;????????????????
????var rowCount:int = dataProviderCollection.length;????????????????
????sheet.resize(rowCount + 1,adg1.columnCount);????????????????
????var columns:Array = adg1.columns;????????????????
????var i:int = 0;????????????????
????//添加标题
????fields = new Array();
????for each (var field:AdvancedDataGridColumn in columns){???
?????//for(var i:int=1; i<columns.length; i++){
?????fields.push(field.dataField.toString());
?????//fields.push(columns[i].dataField.toString());???
?????//sheet.setCell(0,i,field.dataField.toString());????????????????????
?????i++;
????}
????//去除第一个AdvancedDataGridColumn
????fields.shift();
????
????insertSheetHead(fields);
????for(var r:int=0; r < rowCount; r++){????????????????????
?????var record:Object = dataProviderCollection.getItemAt(r);????????????????????
?????/*insert record starting from row no 2 else headers will be overwritten*/????????????????????
?????insertRecordInSheet(r+1,sheet,record,columns.length);
????}
????
????var xls:ExcelFile = new ExcelFile();????????????????
????xls.sheets.addItem(sheet);?????????????????????????????????
????var bytes: ByteArray = xls.saveToByteArray();????????????????
????var fr:FileReference = new FileReference();????????????????
????fr.save(bytes,"SampleExcel.xls");?
????}
???}
???
???/**
??? * 插入表头
??? * @param column:存储表头的Array
??? */
???private function insertSheetHead(column:Array):void{
????var k:int=0;
????for(var j:int=0; j<column.length; j++){
?????
??????sheet.setCell(0,k,column[j]);
??????k++;
????}
???}
???
???
???
???private function insertRecordInSheet(row:int,sheet:Sheet,record:Object,columnLength:int):void{????????????????
????//var colCount:int = adg1.columnCount;????????????????
????for(var c:int=0; c <= columnLength; c++){????????????????????
?????var i:int = 0;??????????????????????????????????????????????????????
?????for each(var field:String in fields){????????????????????????
??????for each (var value:String in record){????????????????????????????
???????if (record[field].toString()==value) {???????????????????????????????
????????sheet.setCell(row,value);
????????//给sheet添加数据???????????????????????????
???????}???????????????????????
??????}????????????????????????
??????i++;????????????????????
?????}????????????????
????}
???}
?
?
-----------------------------------下面是布局代码
<mx:AdvancedDataGrid id="adg1" left="0" right="0" top="25" bottom="0" designViewDataType="flat">
??<mx:columns>
???<mx:AdvancedDataGridColumn dataField="我只看看不说话" visible="false"/>
??</mx:columns>
?</mx:AdvancedDataGrid>
?<s:Button x="577" y="0" label="导出到Excel" click="exportToExcel()"/>
---------------------------------
写好上面的之后,导出中文还会出现乱码,可以在网上下一个 as3xlsUTF8.swc ,放到libs文件夹下即可解决。可以导出列名,还是不错的哦。