<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <mx:Script>
    <![CDATA[
        // Taken from http://cookbooks.adobe.com/post_Import_Export_data_in_out_of_a_Datagrid_in_Flex-17223.html
        // 
        import com.as3xls.xls.Cell;
        import mx.collections.ArrayCollection;
           
        import com.as3xls.xls.Sheet;
        import com.as3xls.xls.ExcelFile;
        import mx.controls.dataGridClasses.DataGridColumn; 
                  
        private var fileReference:FileReference;
        private var sheet:Sheet;
              
        [Bindable]
        private var fields:Array = new Array();  
        private var ItemDGDataProvider:ArrayCollection = new ArrayCollection([
            {name:"Item1",value:"21",qty:"3",cost:"12.21"},
            {name:"Item2",value:"20",qty:"4",cost:"12.22"},
            {name:"Item3",value:"22",qty:"5",cost:"12.23"},
            {name:"Item4",value:"23",qty:"2",cost:"12.24"}
            ]);
           
        [Bindable]
        private var rebateDGDataProvider:ArrayCollection = new ArrayCollection();
      
        private function browseAndUpload():void
        {
            fileReference = new FileReference();
            fileReference.addEventListener(Event.SELECT,fileReference_Select);
            fileReference.addEventListener(Event.CANCEL,fileReference_Cancel);
            fileReference.browse();
        }
        private function fileReference_Select(event:Event):void
        {
            fileReference.addEventListener(ProgressEvent.PROGRESS,fileReference_Progress);
            fileReference.addEventListener(Event.COMPLETE,fileReference_Complete);
            fileReference.addEventListener(IOErrorEvent.IO_ERROR, onLoadError);
            fileReference.load();   
        }
        private function fileReference_Cancel(event:Event):void
        {
            fileReference = null;
        }
        private function fileReference_Progress(event:ProgressEvent):void
        {
            progressBar.visible = true;
            progressBar.includeInLayout = true;
        }
        private function onLoadError():void
        {
               /*body not implemented*/
        }
        private function fileReference_Complete(event:Event):void
        {
            var fileData:ByteArray  = fileReference.data;
            var excelFile:ExcelFile = new ExcelFile();
            var noOfRows:int;
            var noOfColumns:int;
            if(fileData!=null && fileData.length > 0){
                    excelFile.loadFromByteArray(fileData);
                    var sheet:Sheet = excelFile.sheets[0];
                    if(sheet!=null)
                       {
                        noOfRows=sheet.rows;
                        noOfColumns = sheet.cols;
                        for(var row:int = 0; row<noOfRows;row++)
                        {
                            var cellObject:Object ={};
                            for(var col:int=0;col<noOfColumns;col++)
                            {
                                var cell:Cell = new Cell();
                                var cellValue:String = new String();
                                cell = sheet.getCell(row,col);
                                if(cell!=null)
                                {
                                    cellValue =(cell.value).toString();
                                    addProperty(cellObject,col,cellValue);
                                }
                            }// inner for loop ends
                          
                            rebateDGDataProvider.addItem(cellObject);
                        } //for loop ends
                    } //if sheet   
                } //if filedata
            progressBar.visible = false;
            progressBar.includeInLayout =false;
            rebateScheduleDG.includeInLayout = true;
            rebateScheduleDG.visible = true;
            fileReference = null;
        }
        private function addProperty(cellObject:Object,index:int,cellValue:String):void
        {
            if(index == 0)
                cellObject.cost = cellValue;
            else if(index == 1)
                cellObject.name = cellValue;
            else if(index == 2)
                cellObject.qty = cellValue;
            else if(index == 3)
                cellObject.value = cellValue;
        }
      
        private function exportToExcel():void
        {
            sheet = new Sheet();
            var dataProviderCollection:ArrayCollection = rebateByItemDG.dataProvider as ArrayCollection;
            var rowCount:int =  dataProviderCollection.length;
            sheet.resize(rowCount+4,10);
            sheet.setCell(0,0,"Item Name");
            sheet.setCell(0,1,"Item Cost");
            sheet.setCell(0,2,"Item Qty");
            sheet.setCell(0,3,"Item Price");
            var columns:Array = rebateByItemDG.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);
                /*insert record starting from row no 2 else 
                    headers will be overwritten*/
                insertRecordInSheet(r+2,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 = rebateByItemDG.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);  
                        } // if  
                        i++;  
                    } // for record  
                } // for fields  
            } // for colCount  
         
    ]]>
    </mx:Script>
    
        <mx:FormItem label="Do you want to import your items from Excel?" fontWeight="bold">
                <mx:Form>
                    <mx:FormItem label="Browse you excel file" fontWeight="bold">
                        <mx:Button label="Browse" click="browseAndUpload()"/>
                    <mx:HBox>
                        <mx:ProgressBar id="progressBar" includeInLayout="false" visible="false"
                            indeterminate="true"/>
                    </mx:HBox>
                    </mx:FormItem>
                    <mx:DataGrid id="rebateScheduleDG" includeInLayout="false" visible="false" 
                            dataProvider="{rebateDGDataProvider}" width="100%"/>
                </mx:Form>
                            <mx:FormItem label="Export Datagrid items to Excel?" fontWeight="bold">
                <mx:Form>
                    <mx:HBox width="100%" verticalAlign="middle">
                        <mx:DataGrid id="rebateByItemDG" includeInLayout="true" visible="true" 
                            dataProvider="{ItemDGDataProvider}" width="100%" editable="true"/>
                        <mx:Button label="Export To Excel" click="exportToExcel();"/>
                    </mx:HBox>
                </mx:Form>
            </mx:FormItem>

</mx:FormItem>

</mx:Application>

Flex to Excel or Excel to Flex相关推荐

  1. Flex通过Java读取Excel(详细流程)----Excel在客户端(DataGrid动态根据Excel生成)

    2011-03-06 23:57:00|  分类: flex/flash |  标签:excel  flex  java  客户端  as3xls   |字号大中小  订阅 在网上查了很久的资料,就是 ...

  2. flex布局一行三个_CSS Flex布局

    Flex之前 在flex布局出现以前,css布局大致就以下几种布局: 主要使用: normal flow 正常流.文档流 float + clearfix position: relative + p ...

  3. Excel:Excel使用技巧经验总结之(利用Excel自带功能统计各个字段不同类别及其个数并进行图表可视化+非编程实现)图文教程之详细攻略

    Excel:Excel使用技巧经验总结之(利用Excel自带功能统计各个字段不同类别及其个数并进行图表可视化+非编程实现)图文教程之详细攻略 目录 利用Excel自带筛选功能统计各个字段不同类别及其个 ...

  4. 转:[Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!...

    引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...

  5. php laravel导入excel,Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解

    @H_404_0@ 1.简介 @H_404_0@本文主要给大家介绍了关于Laravel 5用Laravel Excel实现Excel/CSV文件导入导出的相关内容,下面话不多说了,来一起看看详细的介绍 ...

  6. java文件无法导出excel文件,【excel表格文件格式无效】java导出excel,excel打不开,报文件格式无效,怎么解决!...

    excel提示 打开的文件.xls的格式与文件扩展名不一致怎么办 如果打开文件的格式与文件的扩展名不一致,只要能够打开就不用去管他. java导出excel,excel打不开,报文件格式无效,怎么解决 ...

  7. 【Laravel】使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能

    一.安装配置 使用Composer安装依赖: composer require maatwebsite/excel 发布配置(可选): php artisan vendor:publish --pro ...

  8. flex布局 flex_时髦的Flickr Flex小部件

    flex布局 flex A web widget, or badge, is a small, embeddable element that you can add to your site tha ...

  9. flex:0是什么意思,flex:0在IE11遇到的问题

    flex:0是什么意思,flex:0在IE11遇到的问题 flex:0表示什么意思 flex 各属性含义 在ie中遇到的问题 flex:0表示什么意思 flex: 0等同于flex: 0 1 0%,也 ...

  10. POI导出excel出现excel无法打开文件“xxx.xlsx”,因为文件格式或文件扩展名无效的问题

    POI导出excel出现excel无法打开文件"xxx.xlsx",因为文件格式或文件扩展名无效的问题 HSSFWorkbook和XSSFWorkbook混用会出现该问题 参考 h ...

最新文章

  1. mysql表格导入java_使用java技术将Excel表格内容导入mysql数据库
  2. 此内容不能显示在一个框架中 ie_Chromium Edge中的IE兼容模式 与我们设想的有些不一样...
  3. mcq 队列_MCQ | 软件生命周期模型
  4. OpenBSD 5.1 正式版发布
  5. Java集合(一、HashMap)
  6. Android开发中listView的item无法获取焦点
  7. 给用户配置hadoop权限
  8. 小米路由器mini实现锐捷认证.
  9. c语言运行全屏,怎么用代码控制C源程序运行时窗口是全屏的?
  10. Vue生命周期,mounted,destory,beforedestory,updated,
  11. 「wps教程」Word里的大神器隐藏技能
  12. css初级之高级语法
  13. Python爬虫贴吧内容
  14. Linux中用maven创建一个简单的项目
  15. 判断sign签名(json格式)
  16. Word如何批量转PDF?分享一个批量转换方法
  17. 手把手教Linux驱动1-模块化编程
  18. mysql 表分区使用场景_MySQL的分区和分表应用场景分析
  19. Unity_扇形图(饼状图)+ UI动画
  20. 【5G架构】5G 核心网架构概述

热门文章

  1. 记windows远程桌面凭据不工作解决办法
  2. easyswoole入门
  3. 打造国内专业企业研发管理解决方案,ONES完成华创资本领投A+轮600万美元融资
  4. Explain是什么?Explain能干嘛?
  5. MPSOC之8——启动及错误处理
  6. 国产替代风潮下,电子元器件B2B商城系统如何助力企业突围市场竞争
  7. 怎么让微信头像做模糊背景
  8. 在线网页群发短信平台哪家好
  9. 华为HCIE 数通认证 基础必学GVRP协议是什么
  10. C++学生信息管理系统(有头链表+文件存取)