flex通过AdvancedDataGrid合并单元格,导出为excel表格

flex通过AdvancedDataGrid组件合并单元格,通过java端动态绑定AdvancedDataGrid的源数据,并导出AdvancedDataGrid源数据为excel表格

(注意:该文件适用于表头最多由4行组成的,若低于4行,AdvancedDataGrid组件下应全部使用AdvancedDataGridColumnGroup)

特别注意:若为表头为4行组成并有合并单元格,应注意AdvancedDataGridColumnGroup和AdvancedDataGridColumn的使用

 

1.创建一个.mxml文件

<?xml version="1.0" encoding="utf-8"?>
<viewer:BaseWidget xmlns:fx="http://ns.adobe.com/mxml/2009"
				   xmlns:s="library://ns.adobe.com/flex/spark"
				   xmlns:mx="library://ns.adobe.com/flex/mx"
				   xmlns:viewer="com.commpent.widget.*"
				   xmlns:quick="com.commpent.quick.*"		  
				   xmlns:esri="http://www.esri.com/2008/ags"				 
				   xmlns:cym="com.commpent.toc.utils.*"				 
				   layout="absolute" creationComplete="init(event)">
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>
	<fx:Script>
		<![CDATA[
			import com.adobe.utils.StringUtil;
			import com.as3xls.xls.ExcelFile;
			import com.as3xls.xls.Sheet;
			import com.commpent.toc.utils.ExportToExcelTool;
			import com.kingtop.tasks.QueryDataBaseTask;
			import com.sys.GobalConfig;
			
			import mx.collections.ArrayCollection;
			import mx.controls.Alert;
			import mx.core.FlexGlobals;
			import mx.events.FlexEvent;
			
			import spark.events.IndexChangeEvent;

			protected function init(event:FlexEvent):void
			{
				//初始化县(市区)的下拉列表
				var url:String = GobalConfig.gobalXML.gobalWebgisUrl+"/cardEditAction.do?method=queryForListByPidOther";
				var querydatabasetask:QueryDataBaseTask = new QueryDataBaseTask(url);
				var xsq:String = FlexGlobals.topLevelApplication.userXZQH;
				querydatabasetask.webParameters = ["code","pid"];
				querydatabasetask.webValues = ["XMSJQ","0"];
				querydatabasetask.queryComplete = OnSearchTypeComplete;
				querydatabasetask.query();
				function OnSearchTypeComplete(event:Event):void
				{
					var loder:URLLoader = event.target as URLLoader; 	 
					try{       	  
						var jsonObject:Object = JSON.parse(loder.data);	      
						if(jsonObject.length == 0){
							return;
						}	      	      
						var array:Array = jsonObject.nodes as Array;
						var arrayxsq:Array = new Array();
						if(xsq == GobalConfig.gobalXML.deptCodeXM || xsq == GobalConfig.gobalXML.deptCodeXMZ){
							arrayxsq = array;
						}else{
							for(var i:int = 0; i<array.length;i++){
								if(array[i]['value'] == xsq){
									arrayxsq.push(array[i]);
									break;
								}
							} 
						}
						XSQ.dataProvider = new ArrayCollection(arrayxsq);
					}catch(error:Error){
						Alert(error.toString());
					}
				}
			}
			
			//随着下拉列表的选择的改变,初始化乡(镇场)或村(工区)的下拉列表
			protected function province_changeHandler(event:IndexChangeEvent):void  
			{  
				var url:String = GobalConfig.gobalXML.gobalWebgisUrl+"/cardEditAction.do?method=queryForListByPidOther";
				var querydatabasetask:QueryDataBaseTask = new QueryDataBaseTask(url);
				querydatabasetask.webParameters = ["code","pid"];
				var sin:int = event.target.selectedIndex;
				try{
					querydatabasetask.webValues = ["XMSJQ",event.target.selectedItem.id];
				}catch(error:Error){
					Alert.show("请从下拉列表中选取!","温馨提示:");
					event.target.selectedIndex = -1;
					event.target.textInput.setFocus();
					return;
				}
				querydatabasetask.queryComplete = OnSearchTypeComplete;
				querydatabasetask.query();
				var id:String = event.target.id;
				function OnSearchTypeComplete(event:Event):void
				{
					var loder:URLLoader = event.target as URLLoader; 	 
					try{       	  
						var jsonObject:Object = JSON.parse(loder.data);	      
						if(jsonObject.length == 0){
							return;
						}	      	      
						var array:Array = jsonObject.nodes as Array;
						if(id == 'XSQ')
						{
							//由于县(市区)下拉列表的选择的改变,所以需将乡(镇场)和村(工区)的下拉列表重置
							XZC.selectedIndex = -1;
							CGQ.selectedIndex = -1;
							XZC.dataProvider = new ArrayCollection(array);
							CGQ.dataProvider = new ArrayCollection();
						}
						else if(id == 'XZC')
						{
							//由于乡(镇场)下拉列表的选择的改变,所以需将村(工区)的下拉列表重置
							CGQ.se
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值