开源DataGrid和AdvancedDataGrid复制到Excel工具类

        Flex号称在RIA开发方面有很大的优势但是通过本人2年的RIA开发经历才知道,Flex搞简单的企业级开发还算比较快,但是稍微复杂一点就不行了,flex没有合适的报表组件,Flex界面上的很多文字内容不能复制。每种技术都有自己的缺陷,本篇我将介绍一个表格右键复制功能。

       先介绍下怎么用吧。

      1 导入gridcopy.swc,swc包在附件中。

      2 引入表格复制工具类

       

import com.beyondsoft.copy.util.GridCopyUtils;

 

   

      3  在表格的creationComplete事件中添加对右键复制功能。

     

 private function init():void{
        	GridCopyUtils.addCopy(dg3);
 }

  

    addCopy就是在表格上添加复制功能,该函数有2个参数

    第一个是表格的引用对象,在mxml中时表格的id

    第二个是导出禁用的列的dataField集合,例如有可能表格的第一列是checkbox那么这列不需要导出。

 

    4 修改表格代码

      默认的情况下Flex的表格组件是只能选择单行的,要想选择多行需要下面代码

     

    

selectable="true" allowMultipleSelection="true" 

 

 下面是整个完成的测试代码

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" fontSize="12" creationComplete="init()" >
	<mx:Script>
		<![CDATA[
			import mx.controls.Alert;
			import mx.controls.dataGridClasses.DataGridColumn;
			import com.beyondsoft.copy.util.GridCopyUtils;
			import mx.collections.ArrayCollection;
			import flash.system.System;
        
        
			[Bindable]
			private var ac:ArrayCollection=new ArrayCollection([
				{col1:"1",col2:"测试1",col3:"31"},
				{col1:"21",col2:"测试2",col3:"3"},
				{col1:"13",col2:"测试3",col3:"3"},
				{col1:"14",col2:"测试4",col3:"32"},
				{col1:"54",col2:"测试6",col3:"3"},
				{col1:"17",col2:"测试3",col3:"13"}
			]);
			
		
        private function init():void{
        	GridCopyUtils.addCopy(dg);
        }
        
        private function getFun(item:Object,dataGridColumn:DataGridColumn):String{
        	return "testsaadasd测试Fun";
        }
		]]>
	</mx:Script>
	<mx:DataGrid showScrollTips="true"  dataProvider="{ac}"     selectable="true" allowMultipleSelection="true" 
		 id="dg" >
		<mx:columns>
			<mx:DataGridColumn headerText="姓名" dataField="col1" visible="true"  />
			<mx:DataGridColumn headerText="测试" dataField="col2" labelFunction="getFun"/>
			<mx:DataGridColumn headerText="性别" dataField="col3"/>
			<mx:DataGridColumn headerText="姓名" dataField="col1"/>
			<mx:DataGridColumn headerText="测试" dataField="col2"/>
		</mx:columns>
	</mx:DataGrid>
</mx:Application>

 

 

运行上面的代码,在表格的上面点击鼠标右键,发现多出了 复制选中行 复制所有行 菜单,多行的选择是通过按住ctrl键或shift键的,选择复制所有行后,打开excel,ctrl+v后表格的全部内容就到excel中了。

 

开源DataGrid和AdvancedDataGrid复制到Excel工具类

 

哈哈,一个简单的复制功能就搞好了,下面说下这个复制的原理吧,这个需求是客户提出的,在html上这个功能不用自己写代码,直接复制到excel中就可以了。

 

其实在excel中一列单元格是以\t结尾的,\n是一行的结束,只要知道这一点就完成可以实现上面的功能了,欢迎大家使用,有什么问题请给我留言,如果需要源代码请留下邮箱。

你可能感兴趣的:(单元测试,Excel,Flex,Flash,Adobe)