flash Buider 4.0 中用AS3实现从datagrid中导出Excel

前面要实现一个导出Excel文件的功能,查找的很多的资料,基本都是组成html代码再交由后台php处理。这里直接用AS3对Datagrid进行处理并生成Excel文件下载。欢迎提出宝贵意见。

导出和Datagrid显示一样的Excel表格。

其中要在项目lib中添加一个SWC文件:下载

中间还可以设置,是否导出Datagrid中隐藏的列。        

         //导出Excel的函数-------------------------------------------------------------
			//实现思路,先获取datagrid中显示的行和列的数目,在生成生成Excel表格
			private var str:String = "";  
			private var sheet:Sheet;  
			private var mbytes:ByteArray;  
			private var file:FileReference;  
			private function onCreate(dg:DataGrid):void {  
				//Alert.show(toString() , "tishi");
				
				var selectedRow:int; 
				var tempCount:int=10000; 
				var rCount:int; //数据行数
				var lCount:int = 0;
				selectedRow=dg.selectedIndex;
				dg.selectedIndex=tempCount; 
				rCount=dg.selectedIndex+1; 
				dg.selectedIndex=selectedRow; 
				/*
				Alert.show(rCount.toString() , "行数");
				//Alert.show(prisonersList.getItemAt(1).cPersonNo,"tishi");
				Alert.show(dg.columns[1].headerText + prisonersList.getItemAt(0)[dg.columns[1].dataField],"行名称+行值");
				
				if(dg.columns[1].visible)
					Alert.show(dg.columns.length.toString() , "列数目");
				*/
				var oldlCount:int = dg.columns.length;
				for(var i:int = 0; i < oldlCount;i++)
					if(dg.columns[i].visible)
						lCount++;
					else
						break;
				
					//dg.dataProvider.getItemAt(0)[dg.columns[1].dataField]
				
				var excelFile:ExcelFile = new ExcelFile();  
				for(var i:int=0; i<rCount;i++){  
					  
					for(var j:int = 0; j < lCount; j++){  
							excelFile.sheets.addItem(generateSheet(0,j,dg.columns[j].headerText));  
							excelFile.sheets.addItem(generateSheet( i+1 , j , prisonersList.getItemAt(i)[dg.columns[j].dataField]));  
					}  
				} 
				
				mbytes = excelFile.saveToByteArray();     
				
				file = new FileReference();  
				try  
				{  
					file.save(mbytes,"基本信息管理.xls"); // 定死文件名  
				}  
				catch (error:Error)  
				{  
					trace("Failed:", error.message)  
				}  
				
				function generateSheet(i:int,j:int,o:String):Sheet{  
					if(!sheet){  
						sheet = new Sheet();  
						sheet.resize(dataGrid_prisonersList.selectedIndices.length+10,dataGrid_prisonersList.columnCount+10);
					}  
					sheet.setCell(i, j, String.fromCharCode(127)+o);  
					return sheet;  
				}  
}

转载于:https://www.cnblogs.com/wyqx/archive/2011/07/13/2104894.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值