flex 从DataGrid列表中导出数据为excel表格

本文介绍了一种使用ActionScript 3.0将Flex DataGrid组件中的数据导出到Excel文件的方法。通过创建Sheet对象并利用ExcelFile类,可以实现从DataGrid获取数据并将其格式化为Excel兼容格式的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import com.as3xls.xls.ExcelFile;
 import com.as3xls.xls.Sheet;
 
 import flash.net.FileReference;
 import flash.utils.ByteArray;
 
 import mx.collections.ArrayCollection;
 import mx.controls.DataGrid;
 import mx.controls.dataGridClasses.DataGridColumn;
 
 public class ExportToExcelTool
 {
  public function ExportToExcelTool()
  {
  }
  
  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++;                     
     }                 
    }            
   } 
  }
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值