flex导出excel
发布时间:2020-12-15 03:56:36 所属栏目:百科 来源:网络整理
导读:封装成类,使用更方便: package{import com.as3xls.xls.Cell; import mx.collections.ArrayCollection; import flash.events.*; import flash.net.FileReference; import com.as3xls.xls.Sheet; import com.as3xls.xls.ExcelFile; import mx.controls.Alert
封装成类,使用更方便: package { import com.as3xls.xls.Cell; import mx.collections.ArrayCollection; import flash.events.*; import flash.net.FileReference; import com.as3xls.xls.Sheet; import com.as3xls.xls.ExcelFile; import mx.controls.Alert; import mx.controls.DataGrid; import mx.controls.dataGridClasses.DataGridColumn; import flash.utils.ByteArray; import mx.controls.Alert; public class ExportToExcel { public function ExportToExcel() { } public static function exportToExcel(myDg:DataGrid):void { var fields:Array = new Array(); var sheet:Sheet= new Sheet(); var dataProviderCollection:ArrayCollection =myDg.dataProvider as ArrayCollection; var rowCount:int = dataProviderCollection.length;/**获得表格的行数**/ sheet.resize(rowCount+1,myDg.columnCount);/**设置表格的行数(rowCount+1),列数(myDg.columnCount)**/ var columns:Array = myDg.columns;/**获得DateGrid列的内容**/ /**循环设置列名的值**/ var i:int = 0; for each (var field:DataGridColumn in columns) { fields.push(field.dataField.toString()); sheet.setCell(0,i,field.headerText.toString());/**第一行的值,取值为myDg的headerText**/ i++; } /**循环设置行的值**/ for(var r:int=0;r<rowCount;r++) { var record:Object =dataProviderCollection.getItemAt(r);/**获得dataProviderCollection的每行Item的对象**/ insertRecordInSheet(r+1,sheet,record);/**调用回调函数写入sheet**/ } var xls:ExcelFile = new ExcelFile(); /**生成Excel文件**/ xls.sheets.addItem(sheet); /**将sheet写入Excel文件中**/ var bytes: ByteArray = xls.saveToByteArray(); /**将xls对象转换为ByteArray流对象**/ var fr:FileReference = new FileReference(); /**生成新文件域**/ fr.save(bytes,"SampleExport.xls"); /**将bytes流对象保存到文件域**/ fr.addEventListener(Event.COMPLETE,function (){ Alert.show("保存成功"); }); /**回调函数**/ function insertRecordInSheet(row:int,sheet:Sheet,record:Object):void { var colCount:int = myDg.columnCount; 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) { if (record[field].toString() == value) /**循环判断myDg列名域值record[field]与value是否相等**/ sheet.setCell(row,value); /**写入表格中**/ } i++; } } } } } }前台代码: <?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" minWidth="955" minHeight="600"> <fx:Script> <![CDATA[ import mx.collections.ArrayCollection; [Bindable] private var ItemDGDataProvider:ArrayCollection = new ArrayCollection([ {name:"Item1",value:"21",qty:"3",cost:"12.21",apples: "1"},{name:"Item2",value:"20",qty:"4",cost:"12.22",{name:"Item3",value:"22",qty:"5",cost:"12.23",{name:"Item4",value:"23",qty:"2",cost:"12.24",apples: "1"} ]); public function exportTo():void { ExportToExcel.exportToExcel(myDg);///调用ExportToExcel类的静态方法 } ]]> </fx:Script> <fx:Declarations> <!-- 将非可视元素(例如服务、值对象)放在此处 --> </fx:Declarations> <mx:DataGrid id="myDg" dataProvider="{ItemDGDataProvider}" width="533" editable="true"/> <mx:Button id="myBtn" x="619" y="113" label="exporttoexcel" click="exportTo();"/> </s:Application> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |