`
lxcaoxin
  • 浏览: 127921 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

Flex界面DateGrid数据导出Excel表格

    博客分类:
  • Flex
阅读更多
   使用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>


分享到:
评论
5 楼 qzy927513 2013-05-20  
你好,问一下导出身份证时是以科学计数法,能不能不以科学计数法形式展现
4 楼 mcmoo 2012-10-02  
3楼的报错看:点项目属性->FLex Compiler->Requiment Flash Player Version改为10.0.0就可以了。
3 楼 ITzouyongqi 2012-09-17  
fr.save();有这个方法吗?
这里报错啊
2 楼 lxcaoxin 2011-10-20  
鬼谷啊单 写道
这要可以吗?能给个例子吗??如果可以,可以说下QQ吗?我的QQ是:1054013200

上面的就是例子了,要加上附件的包!
1 楼 鬼谷啊单 2011-10-20  
这要可以吗?能给个例子吗??如果可以,可以说下QQ吗?我的QQ是:1054013200

相关推荐

    flex导出Excel

    使用as3xls-1.0.1.SWC包做的Flex界面DateGrid数据导出Excel表格。

    flex中dategrid自适应宽度实现

    flex中让dategrid里面的列宽根据内容自适应宽度的方法

    Flex DateGrid表头全选

    NULL 博文链接:https://fhuan123.iteye.com/blog/721237

    easyui的dategrid项目

    而DateGrid是EasyUI中的一个核心组件,主要用于展示和操作数据集,特别适用于数据的增删改查操作。 标题提及的"easyui的dategrid项目",是指一个使用EasyUI框架,结合后端Java技术,通过SSM(Spring、SpringMVC、...

    Flex 动态给DataGrid增加行

    Flex 动态给DataGrid增加行,可编辑行数据

    Flex动态创建DataGrid设置图片

    在Flex开发中,DataGrid控件是用于展示数据集的常用组件,它可以显示多行多列的数据,并且具有丰富的自定义功能。本教程主要聚焦于如何在Flex中动态创建DataGrid,并向其中添加图片,这在创建交互式、富媒体应用时...

    VB6.0中DataGrid的应用.doc

    DataGrid控件是VB6.0中的一种强大且灵活的控件,能够显示一个Recordset对象的记录和字段,并提供了多种方式来编辑和修改数据。本文将深入探讨DataGrid控件的应用,包括其基本特性、设计时特性、运行时特性和常见用法...

    flex组件介绍

    - **DateGrid**:显示一个表格格式的数据列表,适用于展示大量结构化数据。 - **DateField**:显示一个文本框,右侧带日历图标,用于选择日期。 - **Image**:动态加载GIF、JPEG、PNG、SVG、SWF格式的图像文件。 - *...

    ssh+easyui+dategrid

    SSH是一个常见的Java Web开发框架组合,用于构建后端业务逻辑,而EasyUI则是一个基于jQuery的前端UI库,DateGrid是EasyUI的一个组件,用于展示数据表格并支持数据操作。 SSH框架详解: 1. Struts2:是一个MVC...

    30多个 flex3 源码(整理)

    1. **DateGrid编辑**:DateGrid是一种结合日期选择器和数据表格的组件,常用于展示带有日期的数据,并允许用户进行编辑。在Flex中,我们可以自定义CellEditor,将日期选择器与Grid单元格绑定,以便用户能够方便地...

    DateGrid与后台数据交互(官网上有php版)

    DateGrid与后台数据交互的简单demo(部分功能需要自己继续完善),解压后部署即可运行

    数据库和dategrid使用简单例子

    Datagrid是一种常见的用户界面元素,常用于桌面应用程序,如Windows Forms或WPF,用于显示表格形式的数据。 首先,让我们深入了解数据库的基础知识。数据库是一种组织和存储数据的系统,它支持数据的快速检索、更新...

    JQuery中dategrid编辑状态下的数据长度限制方法小结[整理].pdf

    这种规范方法虽然在代码实现上稍显复杂,但能提供更好的用户体验,避免错误数据的保存,并且在界面上有明确的错误提示。 总结来说,限制JQuery DataGrid编辑状态下数据长度的方法主要包括利用组件内置功能、正则...

    WPF 为Grid自定义表格线,支持单元格行列合并

    本教程将深入探讨如何为WPF的Grid自定义表格线,并实现单元格的行列合并,以创建更加美观且功能丰富的用户界面。 首先,我们要理解WPF中的Grid是如何工作的。Grid由一系列行和列组成,每个单元格可以包含一个或多个...

    DateGrid(WinForm)行或单元格变色控件

    总的来说,“DateGrid(WinForm)行或单元格变色控件”是一个实用的工具,它通过可视化方式增强了数据的呈现,使得WinForm应用的数据展示更加直观和生动。开发者可以根据提供的源码和资源进行学习和二次开发,以满足...

    动态可编辑的DataGrid

    在IT行业中,动态可编辑的DataGrid是一种常见且强大的组件,尤其在开发用户界面时,用于展示和操作大量数据。Flex作为Adobe推出的一种开源富互联网应用程序(RIA)框架,提供了丰富的UI组件库,其中就包括了DataGrid...

    25.Xaml DateGrid控件->默认单选,可以多项选择的网格控件

    DateGrid 控件是WPF中常用的一种数据展示和操作的组件,它提供了类似电子表格的功能,可以展示大量数据并支持各种交互操作。在描述中提到的“25.Xaml DateGrid控件”可能是指一个特定的教程或项目,其目标是实现一个...

    WPF下DataGrid每行设置不同的ComboBox的数据绑定

    这种方法的优势在于它允许我们在不牺牲数据绑定的灵活性的同时,保持界面的动态性和可扩展性。在实际项目中,可以根据需要调整数据模型和模板,以适应更复杂的业务逻辑和UI设计。在压缩包文件`DataGridTestWPF`中,...

    权限管理EasyUI tree 及DateGrid 项目案例

    【权限管理EasyUI tree 及DateGrid 项目案例】是一个基于EasyUI框架的Web应用程序,主要目的是实现用户权限的登录管理和界面展示。EasyUI是一个基于jQuery的轻量级UI库,它提供了丰富的组件,简化了网页开发过程。在...

Global site tag (gtag.js) - Google Analytics