使用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
而DateGrid是EasyUI中的一个核心组件,主要用于展示和操作数据集,特别适用于数据的增删改查操作。 标题提及的"easyui的dategrid项目",是指一个使用EasyUI框架,结合后端Java技术,通过SSM(Spring、SpringMVC、...
Flex 动态给DataGrid增加行,可编辑行数据
在Flex开发中,DataGrid控件是用于展示数据集的常用组件,它可以显示多行多列的数据,并且具有丰富的自定义功能。本教程主要聚焦于如何在Flex中动态创建DataGrid,并向其中添加图片,这在创建交互式、富媒体应用时...
DataGrid控件是VB6.0中的一种强大且灵活的控件,能够显示一个Recordset对象的记录和字段,并提供了多种方式来编辑和修改数据。本文将深入探讨DataGrid控件的应用,包括其基本特性、设计时特性、运行时特性和常见用法...
- **DateGrid**:显示一个表格格式的数据列表,适用于展示大量结构化数据。 - **DateField**:显示一个文本框,右侧带日历图标,用于选择日期。 - **Image**:动态加载GIF、JPEG、PNG、SVG、SWF格式的图像文件。 - *...
SSH是一个常见的Java Web开发框架组合,用于构建后端业务逻辑,而EasyUI则是一个基于jQuery的前端UI库,DateGrid是EasyUI的一个组件,用于展示数据表格并支持数据操作。 SSH框架详解: 1. Struts2:是一个MVC...
1. **DateGrid编辑**:DateGrid是一种结合日期选择器和数据表格的组件,常用于展示带有日期的数据,并允许用户进行编辑。在Flex中,我们可以自定义CellEditor,将日期选择器与Grid单元格绑定,以便用户能够方便地...
DateGrid与后台数据交互的简单demo(部分功能需要自己继续完善),解压后部署即可运行
Datagrid是一种常见的用户界面元素,常用于桌面应用程序,如Windows Forms或WPF,用于显示表格形式的数据。 首先,让我们深入了解数据库的基础知识。数据库是一种组织和存储数据的系统,它支持数据的快速检索、更新...
这种规范方法虽然在代码实现上稍显复杂,但能提供更好的用户体验,避免错误数据的保存,并且在界面上有明确的错误提示。 总结来说,限制JQuery DataGrid编辑状态下数据长度的方法主要包括利用组件内置功能、正则...
本教程将深入探讨如何为WPF的Grid自定义表格线,并实现单元格的行列合并,以创建更加美观且功能丰富的用户界面。 首先,我们要理解WPF中的Grid是如何工作的。Grid由一系列行和列组成,每个单元格可以包含一个或多个...
总的来说,“DateGrid(WinForm)行或单元格变色控件”是一个实用的工具,它通过可视化方式增强了数据的呈现,使得WinForm应用的数据展示更加直观和生动。开发者可以根据提供的源码和资源进行学习和二次开发,以满足...
在IT行业中,动态可编辑的DataGrid是一种常见且强大的组件,尤其在开发用户界面时,用于展示和操作大量数据。Flex作为Adobe推出的一种开源富互联网应用程序(RIA)框架,提供了丰富的UI组件库,其中就包括了DataGrid...
DateGrid 控件是WPF中常用的一种数据展示和操作的组件,它提供了类似电子表格的功能,可以展示大量数据并支持各种交互操作。在描述中提到的“25.Xaml DateGrid控件”可能是指一个特定的教程或项目,其目标是实现一个...
这种方法的优势在于它允许我们在不牺牲数据绑定的灵活性的同时,保持界面的动态性和可扩展性。在实际项目中,可以根据需要调整数据模型和模板,以适应更复杂的业务逻辑和UI设计。在压缩包文件`DataGridTestWPF`中,...
【权限管理EasyUI tree 及DateGrid 项目案例】是一个基于EasyUI框架的Web应用程序,主要目的是实现用户权限的登录管理和界面展示。EasyUI是一个基于jQuery的轻量级UI库,它提供了丰富的组件,简化了网页开发过程。在...