FLEX에서 DataGrid Excel 내보내기

12393 단어 datagrid
Flex의 웹 응용 프로그램은 데이터가 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 var iables:URLVariables = new URLVariables(); var iables.htmltable = convertDGToHTMLTable(dg); var u:URLRequest = new URLRequest(url); u.data = var iables; 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 }

도움이 됐으면 좋겠어요.

좋은 웹페이지 즐겨찾기