flex导出excel具体实现
flex导出excel具体实现
发布时间:2016-12-29 来源:查字典编辑
摘要:需要插件as3xls-1.0.1.swc复制代码代码如下:importcom.as3xls.xls.ExcelFile;importcom....

需要插件 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>

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Flex学习
热门Flex学习
编程开发子分类