Flex中通过调用setClipboard将DataGrid数据复制到剪贴板便于导出Excel的代码--复制

 

package com.xxxxxxxx
{
 import mx.controls.DataGrid;
 import mx.controls.dataGridClasses.DataGridColumn;
 import mx.collections.ArrayCollection;
 import mx.collections.XMLListCollection;
 import mx.collections.IList;
 import mx.collections.IViewCursor;
 import mx.collections.CursorBookmark;

 public class DataGridDataExporter
 {
  public static function exportCSV(dg:DataGrid, csvSeparator:String="\t", lineSeparator:String="\n"):String
  {
   var data:String="";
   var columns:Array=dg.columns;
   var columnCount:int=columns.length;
   var column:DataGridColumn;
   var header:String="";
   var headerGenerated:Boolean=false;
   var dataProvider:Object=dg.dataProvider;
   var rowCount:int=dataProvider.length;
   var dp:Object=null;
   var cursor:IViewCursor=dataProvider.createCursor();
   var j:int=0;
//loop through rows
   while (!cursor.afterLast)
   {
    var obj:Object=null;
    obj=cursor.current;
//loop through all columns for the row
    for (var k:int=0; k < columnCount; k++)
    {
     column=columns[k];
//Exclude column data which is invisible (hidden)
     if (!column.visible)
     {
      continue;
     }
     data+="\"" + column.itemToLabel(obj) + "\"";
     if (k < (columnCount - 1))
     {
      data+=csvSeparator;
     }
//generate header of CSV, only if it's not genereted yet
     if (!headerGenerated)
     {
      header+="\"" + column.headerText + "\"";
      if (k < columnCount - 1)
      {
       header+=csvSeparator;
      }
     }
    }
    headerGenerated=true;
    if (j < (rowCount - 1))
    {
     data+=lineSeparator;
    }
    j++;
    cursor.moveNext();
   }
//set references to null:
   dataProvider=null;
   columns=null;
   column=null;
   return (header + "\r\n" + data);
  }
 }
}

 

 

 

前台

//复制datagrid的数据
   private function copyDatagrid():void
   {
    System.setClipboard(DataGridDataExporter.exportCSV(datagrid));//datagrid是DataGrid的id
   }

 

复制按钮 -- click=copyDatagrid

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值