FLex中 DataGrid导出Excel

本文介绍了一种使用Flex将DataGrid数据转换为HTML格式,并通过ASP.NET的ashx文件导出为Excel的方法。该方法避免了传统的Flex与C#交互生成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 public class JinExcelExport : IHttpHandler {
 7     
 8     public void 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     public bool IsReusable {
17         get {
18             return false;
19         }
20     }
21 
22 }

希望对大家有帮助

【电力系统】单机无穷大电力系统短路故障暂态稳定Simulink仿真(带说明文档)内容概要:本文档围绕“单机无穷大电力系统短路故障暂态稳定Simulink仿真”展开,提供了完整的仿真模型与说明文档,重点研究电力系统在发生短路故障后的暂态稳定性问题。通过Simulink搭建单机无穷大系统模型,模拟不同类型的短路故障(如三相短路),分析系统在故障期间及切除后的动态响应,包括发电机转子角度、转速、电压和功率等关键参数的变化,进而评估系统的暂态稳定能力。该仿真有助于理解电力系统稳定性机理,掌握暂态过程分析方法。; 适合人群:电气工程及相关专业的本科生、研究生,以及从事电力系统分析、运行与控制工作的科研人员和工程师。; 使用场景及目标:①学习电力系统暂态稳定的基本概念与分析方法;②掌握利用Simulink进行电力系统建模与仿真的技能;③研究短路故障对系统稳定性的影响及提高稳定性的措施(如故障清除时间优化);④辅助课程设计、毕业设计或科研项目中的系统仿真验证。; 阅读建议:建议结合电力系统稳定性理论知识进行学习,先理解仿真模型各模块的功能与参数设置,再运行仿真并仔细分析输出结果,尝试改变故障类型或系统参数以观察其对稳定性的影响,从而深化对暂态稳定问题的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值