加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

FLex中 DataGrid导出Excel

发布时间:2020-12-15 01:16:56 所属栏目:百科 来源:网络整理
导读:?Flex的Web应用程序,经常有数据导出Excel的需求。我从前的处理方式为:FLex的DataGrid数据传入C#,在服务端处理生成Excel文件,之后再将生成的文件地址传回Flex,进行下载 这样做不仅在编程实现上较为麻烦,而且速度较慢,现在可直接通过Flex生成 Html格式
?Flex的Web应用程序,经常有数据导出Excel的需求。我从前的处理方式为:FLex的DataGrid数据传入C#,在服务端处理生成Excel文件,之后再将生成的文件地址传回Flex,进行下载

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

?

    

view source print ?
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 }

希望对大家有帮助

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读