Flex的Web应用程序,经常有数据导出Excel的需求。我从前的处理方式为:FLex的DataGrid数据传入C#,在服务端处理生成Excel文件,之后再将生成的文件地址传回Flex,进行下载
这样做不仅在编程实现上较为麻烦,而且速度较慢,现在可直接通过Flex生成 Html格式的字符串,然后传入服务端的一个asxh文件中,输出到客户端浏览器,下面是代码
view source print ?
import flash.net.URLRequest; |
import flash.net.URLVariables; |
private function convertDGToHTMLTable(dg:DataGrid):String { |
var font:String = dg.getStyle('fontFamily'); |
var size:String = dg.getStyle('fontSize'); |
var style:String = 'style="font-family:'+font+';font-size:'+size+'pt;"'; |
if(dg.getStyle("headerColor") != undefined) { |
hcolor = [dg.getStyle("headerColor")]; |
hcolor = dg.getStyle("headerColors"); |
str+= '+dg.width+'" border="1">+dg.width+'"as3 plain">+Number((hcolor[0])).toString(16)+'">'; colors = dg.getStyle("themeColor"); | if(dg.columns[i].headerText != undefined) { | str+="+style+">"+dg.columns[i].headerText+" | "; | str+= "+style+">"+dg.columns[i].dataField+" | "; | colors = dg.getStyle("alternatingRowColors"); | str+="+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 += "+Math.ceil(dg.columns[k].width)+"\" "+style+">"+dg.columns[k].labelFunction(dg.dataProvider.getItemAt(j),dg.columns[k].dataField)+" | "; | str += "+Math.ceil(dg.columns[k].width)+"\" "+style+">"+dg.dataProvider.getItemAt(j)[dg.columns[k].dataField]+" | "; | "; |
private function loadDGInExcel(dg:DataGrid,url:String):void { |
var variables:URLVariables = new URLVariables(); |
variables.htmltable = convertDGToHTMLTable(dg); |
var u:URLRequest = new URLRequest(url); |
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 }
希望对大家有帮助
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!