`
yunzhongxia
  • 浏览: 649545 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

    博客分类:
  • flex
阅读更多

        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中了。

 

 

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

 

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

  • 大小: 16.3 KB
1
2
分享到:
评论
7 楼 yangfan1110 2014-01-06  
yangfan1110 写道
你好,能发一份源代码吗?系统需要还要实现从excel复制粘贴到datagrid的功能,能把源码发个我,学习一下吗?谢谢。
  邮箱:553001895@qq.com
6 楼 yangfan1110 2014-01-06  
你好,能发一份源代码吗?系统需要还要实现从excel复制粘贴到datagrid的功能,能把源码发个我,学习一下吗?谢谢。
5 楼 Hello_Kitty_O 2013-04-12  
  您好!能否发一份源码,谢谢! 515798956@qq.com
4 楼 iloveningxia 2013-03-07  
你好!高手啊!让小女子研究下你老人家的源码吧! 879503688@qq.com
3 楼 Pong 2011-11-03  
yunzhongxia 写道
Pong 写道
你好,我用AdvancedDataGrid时,复制后异常,如下:
Type Coercion failed: cannot convert mx.controls.advancedDataGridClasses::AdvancedDataGridColumn@e254101 to mx.controls.advancedDataGridClasses.AdvancedDataGridColumnGroup.
能否把源码发我邮箱(shikithono.gp@gmail.com)我研究下,谢谢啊 : )

您好,你是不是用到了表格列的分组?

是的,想要按那个列分组的格式导出Excel;貌似走这个复制剪切板的路子行不通,现在考虑组织成html然后调navigateToUrl打开,由浏览器选择Excel打开~
刚接触Flex不久,我想学习下你的gridcopy代码,能发我邮箱看下吗?不甚感激~
2 楼 yunzhongxia 2011-11-03  
Pong 写道
你好,我用AdvancedDataGrid时,复制后异常,如下:
Type Coercion failed: cannot convert mx.controls.advancedDataGridClasses::AdvancedDataGridColumn@e254101 to mx.controls.advancedDataGridClasses.AdvancedDataGridColumnGroup.
能否把源码发我邮箱(shikithono.gp@gmail.com)我研究下,谢谢啊 : )

您好,你是不是用到了表格列的分组?
1 楼 Pong 2011-11-03  
你好,我用AdvancedDataGrid时,复制后异常,如下:
Type Coercion failed: cannot convert mx.controls.advancedDataGridClasses::AdvancedDataGridColumn@e254101 to mx.controls.advancedDataGridClasses.AdvancedDataGridColumnGroup.
能否把源码发我邮箱(shikithono.gp@gmail.com)我研究下,谢谢啊 : )

相关推荐

    flex datagrid 改变

    通过阅读和理解这个文件,我们可以学习到如何在实际项目中应用和改变Flex DataGrid。 总之,Flex DataGrid的自定义是一个广泛的领域,涵盖了从基本的样式调整到复杂的业务逻辑实现。通过学习和实践,开发者可以创建...

    Flex中AdvancedDataGrid的用法示例介绍

    在Flex开发中,AdvancedDataGrid组件是一个常用的显示表格数据的组件,其功能比基础的DataGrid组件更为强大,支持更加复杂的数据显示需求,例如显示多层表头、支持拖拽排序等。在某些情况下,当需要展示具有复杂数据...

    IT技术文章示例

    根据给定的文件信息,以下是对提及的IT...以上知识点覆盖了IT技术的多个方面,从前端技术(如Flex、jQuery)到后端技术(如Java、Spring、iBatis),再到数据库操作、异常处理等领域,展示了IT技术领域的广阔和深邃。

    Flex 开发实例( ArcGIS)

    Flex是一种开源框架,用于构建高质量的Web应用程序,并将其部署到桌面浏览器和移动设备上。Flex结合了强大的编程语言ActionScript 3.0以及MXML标记语言,支持创建具有丰富用户体验的应用程序。Flex开发遵循XML的标准...

    Flex开发实例.pdf

    Flex是一种开源框架,用于构建高质量的Web应用程序,并且能够跨浏览器、桌面和操作系统进行部署。Flex的核心优势在于其强大的图形渲染能力,使得开发者可以创建出丰富的用户体验。Flex主要使用两种语言:MXML(Flex...

    Flex详细文档.pdf

    Flex的核心优势在于其能够跨平台运行,并且提供了一套完整的开发工具链,使得开发者能够更加高效地创建和部署动态的Web应用。 ##### 1. Flex基础 - **MXML**: MXML是Flex的主要标记语言,它是一种基于XML的语言,...

    Flex开发实例--学习必备

    根据给定的文件信息,我们可以总结出一系列关于Flex开发的基础知识点和特定实例,适用于初学者。以下是详细的知识点概述: ### Flex开发基础 #### 1. Flex简介 - **Flex** 是一种开源框架,用于构建高质量的Web...

    Flex入门实例教程

    - **定义与特点**:Flex是一种开源框架,用于构建高质量的Web应用程序,并可跨浏览器、操作系统和设备进行部署。它结合了HTML、JavaScript和Flash Player的功能,使得开发者能够创建丰富的交互式应用。Flex的核心...

    Flex基础入门与开发实例

    11. **导入ActionScript类到Flex**: 使用`import`语句导入外部类。 12. **数据绑定**: Flex支持强大的数据绑定机制,可以轻松实现数据和界面的双向同步。 13. **事件对象**: Flex中的事件模型基于事件监听器,可以...

Global site tag (gtag.js) - Google Analytics