使用as3xls-1.0.1.SWC包做的Flex界面DateGrid数据导出Excel表格
[color=red]注意:
1.FileReference的save方法在Flash10才支持,在Flex工程上右键,属性,Flex Conpiler中把Require Flash Player version:填为10.0.0。
2.生成的Excel为旧版本,需要微软office才能打开,金山WPS版本不兼容。
3.as3xls-1.0.1.SWC解决as3xls-1.0.swc的中文乱码问题,附件提供。
as工具类:Util.as
package lzr.util
{
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 Util
{
public function Util()
{
}
/**导出Excel表格函数,参数为DataGrid**/
public static function exportToExcel(myDg:DataGrid):void
{
var fields:Array = new Array();
/**生成表对象sheet**/
var sheet:Sheet= new Sheet();
var dataProviderCollection:ArrayCollection =myDg.dataProvider as ArrayCollection;
/**获得表格的行数**/
var rowCount:int = dataProviderCollection.length;
/**设置表格的行数(rowCount+1),列数(myDg.columnCount)**/
sheet.resize(rowCount+1,myDg.columnCount);
/**获得DateGrid列的内容**/
var columns:Array = myDg.columns;
/**循环设置列名的值**/
var i:int = 0;
for each (var field:DataGridColumn in columns)
{
fields.push(field.dataField.toString());
/**第一行的值,取值为myDg的headerText**/
sheet.setCell(0,i,field.headerText.toString());
i++;
}
/**循环设置行的值**/
for(var r:int=0;r<rowCount;r++)
{
/**获得dataProviderCollection的每行Item的对象**/
var record:Object =dataProviderCollection.getItemAt(r);
/**调用回调函数写入sheet**/
insertRecordInSheet(r+1,sheet,record);
}
/**生成Excel文件**/
var xls:ExcelFile = new ExcelFile();
/**将sheet写入Excel文件中**/
xls.sheets.addItem(sheet);
/**将xls对象转换为ByteArray流对象**/
var bytes: ByteArray = xls.saveToByteArray();
/**生成新文件域**/
var fr:FileReference = new FileReference();
/**将bytes流对象保存到文件域**/
fr.save(bytes,"SampleExport.xls");
/**回调函数**/
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)
{
/**循环判断myDg列名域值record[field]与value是否相等**/
if (record[field].toString() == value)
/**写入表格中**/
sheet.setCell(row,i,value);
}
i++;
}
}
}
}
}
}
mxml界面 Test.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init();">
<mx:Script>
<![CDATA[
[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<5;i++)
{
//ItemName/ItemCost/ItemQty/ItemPrice
var tempArray:Array = new Array();
tempArray.ItemName="测试"+i;
tempArray.ItemCost="调试"+i;
tempArray.ItemQty="ItemQty^^"+i;
tempArray.ItemPrice="ItemPrice^^"+i;
dg.push(tempArray);
}
}
public function exportTo():void
{
///调用Util类的静态方法
Util.exportToExcel(myDg);
}
]]>
</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="exportTo();"/>
</mx:Application>
分享到:
相关推荐
使用as3xls-1.0.1.SWC包做的Flex界面DateGrid数据导出Excel表格。
flex中让dategrid里面的列宽根据内容自适应宽度的方法
NULL 博文链接:https://fhuan123.iteye.com/blog/721237
Flex 动态给DataGrid增加行,可编辑行数据
DateGrid与后台数据交互的简单demo(部分功能需要自己继续完善),解压后部署即可运行
很好用的动态创建DataGrid并加入图片的方式。 只需要继承和实现一个接口就可以了。
前端easyui,后端Java,框架的搭建ssm 功能:实现easyui的dategrid对数据库的增删该查。
JQuery中dategrid编辑状态下的数据长度限制方法小结[整理].pdf
DateGrid编辑 判断鼠标是双击还是单击 图表/线状图/单线 日期选择器效果 引用Swf的Btn按钮 Tree下拉列表里含有 Menu样式 flex的增删改查
Xcode签出源代码并解析版本后,您可以选择“ DateGrid”库并将其添加到您的应用程序目标中。 用法 DateGrid ( interval : dateInterval , selectedMonth : $selectedMonthDate, mode : mode) { dateGridDate in ...
框架版本可能有点低,但不影响功能实现
WPF下DataGrid每行设置不同的ComboBox的数据绑定 DataGrid设置一次ItemSource 每个ComboBox也要设置一次ItemSource 有点像通过两次映射来绑定
25.Xaml DateGrid控件->默认单选,可以多项选择的网格控件
简单的例子,帮助入门的同学了解数据库和datagrid控件使用
使用这个js,只需要一行代码即可实现easyui datagrid 导出到excel(之前在网上找了很多方法,看了很多文章,大部分实现这个功能都需要一大堆代码,几十行甚至上百行,这个一行代码解决他不香吗)
项目实现了权限登陆管理 项目以EasyUI为主 实现DataGrid 及tree 与后台交互 有HTML+JS+Ajax 也有ASP.net 的easyUI控件
Flex动态datagrid可以进行增删改查
使DataGrid的指定行或指定列或指定值为不同条件时以指定的颜色显示突出。
4) 当对前端界面联动需求较为复杂的时候,基于dojo的页面组件将是首选,因为其可以将界面中某一个具有共性的区域抽象出来,封装这一区域的界面行为以及数据,可以用搭积木的方式完成复杂页面的开发 Dijit库提供了...
VC 通过简单的ADO知识进行简单的数据库操作,比如连接数据库、读取数据库内容显示在DateGrid中,实现数据分页等。虽然都是很简单的功能,但是学习数据库的基矗