zoukankan      html  css  js  c++  java
  • FLex中 DataGrid导出Excel(web版,非AIR)

      FLex中 DataGrid导出Excel

        Flex的Web应用程序,经常有数据导出Excel的需求。我从前的处理方式为:FLex的DataGrid数据传入C#,在服务端处理生成Excel文件,之后再将生成的文件地址传回Flex,进行下载

        这样做不仅在编程实现上较为麻烦,而且速度较慢,现在可直接通过Flex生成 Html格式的字符串,然后传入服务端的一个asxh文件中,输出到客户端浏览器,下面是代码

        

    import flash.errors.*;
    import flash.events.*;
    import flash.external.*;
    import flash.net.URLRequest;
    import flash.net.URLVariables;
    
    /**
     * 作者:IT小金
     * 时间:2011-09-07
     * 功能:FLex DataGird生成HTML 导出Excel
     */
     
    /*将DataGird导出成HTML格式*/
    private function convertDGToHTMLTable(dg:DataGrid):String {
    	//设置默认参数
    	var font:String = dg.getStyle('fontFamily');
    	var size:String = dg.getStyle('fontSize');
    	var str:String = '';
    	var colors:String = '';
    	var style:String = 'style="font-family:'+font+';font-size:'+size+'pt;"';				
    	var hcolor:Array;
    	
    	//设置标题行颜色
    	if(dg.getStyle("headerColor") != undefined) {
    		hcolor = [dg.getStyle("headerColor")];
    	} else {
    		hcolor = dg.getStyle("headerColors");
    	}				
    	
    	//根据datagrid设置基础结构
    	str+= '<table width="'+dg.width+'" border="1"><thead><tr width="'+dg.width+'" style="background-color:#' +Number((hcolor[0])).toString(16)+'">';
    	
    	//设置列头			
    	for(var i:int = 0;i<dg.columns.length;i++) {
    		colors = dg.getStyle("themeColor");
    			
    		if(dg.columns[i].headerText != undefined) {
    			str+="<th "+style+">"+dg.columns[i].headerText+"</th>";
    		} else {
    			str+= "<th "+style+">"+dg.columns[i].dataField+"</th>";
    		}
    	}
    	str += "</tr></thead><tbody>";
    	colors = dg.getStyle("alternatingRowColors");
    	
    
    	//设置单元格数据,数据遍历DataGird
    	for(var j:int =0;j<dg.dataProvider.length;j++) {					
    		str+="<tr width=\""+Math.ceil(dg.width)+"\">";
    			
    		for(var k:int=0; k < dg.columns.length; k++) {
    			
    			if(dg.dataProvider.getItemAt(j) != undefined && dg.dataProvider.getItemAt(j) != null) {
    				if(dg.columns[k].labelFunction != undefined) {
    					str += "<td width=\""+Math.ceil(dg.columns[k].width)+"\" "+style+">"+dg.columns[k].labelFunction(dg.dataProvider.getItemAt(j),dg.columns[k].dataField)+"</td>";
    					
    				} else {
    					str += "<td width=\""+Math.ceil(dg.columns[k].width)+"\" "+style+">"+dg.dataProvider.getItemAt(j)[dg.columns[k].dataField]+"</td>";
    				}
    			}
    		}
    		str += "</tr>";
    	}
    	str+="</tbody></table>";
    
    	return str;
    }
    
    
    /*接Asp。net中 ashx一般处理程序,输出html成Excel文件
     */
    private function loadDGInExcel(dg:DataGrid,url:String):void {
    
    	var variables:URLVariables = new URLVariables(); 
    	variables.htmltable	= convertDGToHTMLTable(dg);
    	
    	var u:URLRequest = new URLRequest(url);
    	u.data = variables; 
    	u.method = URLRequestMethod.POST; 
        navigateToURL(u,"_self");
    }       
    
    

    下面是在.net中建立的一个一般处理程序,代码如下

     1 <%@ WebHandler Language="C#" Class="JinExcelExport"%>
    2
    3 using System;
    4 using System.Web;
    5
    6 publicclass JinExcelExport : IHttpHandler {
    7
    8 publicvoid ProcessRequest (HttpContext context) {
    9
    10 context.Response.ContentType ="application/vnd.ms-excel";
    11 context.Response.AddHeader("Content-Disposition", string.Format("attachment;filename=ExportExcel.xls"));
    12 context.Response.Write(context.Request.Form["htmltable"]);
    13
    14 }
    15
    16 publicbool IsReusable {
    17 get {
    18 returnfalse;
    19 }
    20 }
    21
    22 }

    希望对大家有帮助

  • 相关阅读:
    【codecombat】 试玩全攻略 第二章 边远地区的森林 一步错
    【codecombat】 试玩全攻略 第十八关 最后的kithman族
    【codecombat】 试玩全攻略 第二章 边远地区的森林 woodlang cubbies
    【codecombat】 试玩全攻略 第二章 边远地区的森林 羊肠小道
    【codecombat】 试玩全攻略 第十七关 混乱的梦境
    【codecombat】 试玩全攻略 第二章 边远地区的森林 林中的死亡回避
    【codecombat】 试玩全攻略 特别关:kithguard斗殴
    【codecombat】 试玩全攻略 第二章 边远地区的森林 森林保卫战
    【codecombat】 试玩全攻略 第二章 边远地区的森林
    实验3 类和对象||
  • 原文地址:https://www.cnblogs.com/80hou/p/2169589.html
Copyright © 2011-2022 走看看