您的位置:首页 > 其它

Flex把datagrid的内容导出到Excel

2011-10-24 15:50 288 查看
最近在做这个,要下载一个as3xls.swc文件,这个是开源的。

下面介绍下datagrid数据保存到excel文件中。

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init();">

<mx:Script>

<![CDATA[

import com.as3xls.xls.Cell;

import mx.collections.ArrayCollection;

import com.as3xls.xls.Sheet;

import com.as3xls.xls.ExcelFile;

import mx.controls.Alert;

private var fileReference:FileReference;

private var xls:Class;

private var sheet:Sheet;

[Bindable]

private var dg:Array;

[Bindable]

private var fields:Array = new Array();

private function init():void

{

dg=new Array();

for(var i:int=0;i<4;i++)

{

//ItemName/ItemCost/ItemQty/ItemPrice

var tempArray:Array = new Array();

tempArray.ItemName="ItemName^^"+i;

tempArray.ItemCost="ItemCost^^"+i;

tempArray.ItemQty="ItemQty^^"+i;

tempArray.ItemPrice="ItemPrice^^"+i;

dg.push(tempArray);

}

}

private function exportToExcel():void

{

sheet = new Sheet();

var dataProviderCollection:ArrayCollection =myDg.dataProvider as ArrayCollection;

var rowCount:int = dataProviderCollection.length;

sheet.resize(rowCount+1,myDg.columnCount);

var columns:Array = myDg.columns;

var i:int = 0;

for each (var field:DataGridColumn in columns)

{

fields.push(field.dataField.toString());

sheet.setCell(0,i,field.dataField.toString());

i++;

}

for(var r:int=0;r<rowCount;r++)

{

var record:Object =dataProviderCollection.getItemAt(r);

insertRecordInSheet(r+1,sheet,record);

}

var xls:ExcelFile = new ExcelFile();

xls.sheets.addItem(sheet);

var bytes: ByteArray = xls.saveToByteArray();

var fr:FileReference = new FileReference();

fr.save(bytes,"SampleExport.xls");

}

private 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)

sheet.setCell(row,i,value);

}

i++;

}

}

}

]]>

</mx:Script>

<mx:DataGrid id="myDg" x="78" y="55" width="533" height="157" dataProvider="{dg}">

<mx:columns>

<mx:DataGridColumn headerText="ItemName" dataField="ItemName"/>

<mx:DataGridColumn headerText="ItemCost" dataField="ItemCost"/>

<mx:DataGridColumn headerText="ItemQty" dataField="ItemQty"/>

<mx:DataGridColumn headerText="ItemPrice" dataField="ItemPrice"/>

</mx:columns>

</mx:DataGrid>

<mx:Button id="myBtn" x="619" y="113" label="exporttoexcel" click="exportToExcel();"/>

</mx:Application>

FileReference是flash10.0.0版本所有的。所以你要使用此类,必须设置你的开发环境。具体右键-->properties-->Flex compiler里面设置版本。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: