package com.wks.util
{
import flash.net.URLRequestMethod;
import flash.net.navigateToURL;
import mx.controls.AdvancedDataGrid;
import mx.controls.advancedDataGridClasses.AdvancedDataGridColumn;
import mx.controls.advancedDataGridClasses.AdvancedDataGridColumnGroup;
import mx.controls.dataGridClasses.DataGridColumn;
public class ToExcel
{
public function ToExcel()
{
}
import flash.errors.*;
import flash.events.*;
import flash.external.*;
import flash.net.URLRequest;
import flash.net.URLVariables;
import mx.controls.DataGrid;
private var myReg:RegExp = /undefined/gi;
/**
* 作者:IT小金
* 时间:2011-09-07
* 功能:FLex DataGird生成HTML 导出Excel
*/
/*将DataGird导出成HTML格式*/
public function convertDGToHTMLTable(dg:DataGrid,tableName:String):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;
//设置标题行颜色
var styleName:Object = dg.styleName;
if(dg.getStyle("headerColor") != undefined) {
hcolor = [dg.getStyle("headerColor")];
} else {
hcolor = dg.getStyle("headerColors");
}
//根据datagrid设置基础结构
str+='<table border="1" style="text-align:center"><tr><td>'+tableName+'</td></tr><tr><td>';
if(hcolor)
str+= '<table style="text-align:center" width="'+dg.width+'" border="1"><thead><tr width="'+dg.width+'" style="background-color:#' +Number((hcolor[0])).toString(16)+'">';
else
str+= '<table style="text-align:center" width="'+dg.width+'" border="1"><thead><tr width="'+dg.width+'" >';
//设置列头
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].dataField) {
str += "<td width=\""+Math.ceil(dg.columns[k].width)+"\" "+style+"></td>";
}
else 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></td></tr></table>";
str = str.replace(myReg,"");
return str;
}
public function convertADGToHTMLTable(dg:AdvancedDataGrid,tableName:String):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 border="1" style="text-align:center"><tr><td>'+tableName+'</td></tr><tr><td><table style="text-align:center" width="'+dg.width+'" border="1"><thead><tr width="'+dg.width+'" style="background-color:#' +Number((hcolor[0])).toString(16)+'">';
//得到ColumnGroup
var gColLength:int = dg.groupedColumns.length;
var colLength:int = dg.columnCount;
//设置列头
for(var i:int = 0;i<dg.groupedColumns.length;i++) {
colors = dg.getStyle("themeColor");
if(dg.groupedColumns[i].headerText != undefined) {
if(dg.groupedColumns[i] as AdvancedDataGridColumnGroup) {
str+='<th><table style="text-align:center" border="1" width="100%" height="100%">';
var adgcg:AdvancedDataGridColumnGroup = dg.groupedColumns[i];
str+="<tr><th colspan=\""+adgcg.children.length+"\" >"+adgcg.headerText+"</th><tr/>";
if(adgcg.children) {
str+='<tr height="100%">';
for(var k:int=0; k<adgcg.children.length; k++) {
str+="<th>"+adgcg.children[k].headerText+"</th>";
}
str+="</tr>";
}
str+="</table></th>";
}
else if(dg.groupedColumns[i] as AdvancedDataGridColumn)
{
str+="<th "+style+">"+dg.groupedColumns[i].headerText+"</th>";
}
} else {
str+= "<th "+style+">"+dg.groupedColumns[i].dataField+"</th>";
}
}
str += "</tr></thead><tbody>";
colors = dg.getStyle("alternatingRowColors");
//设置单元格数据,数据遍历DataGird
var adc:AdvancedDataGridColumn = new AdvancedDataGridColumn;
var dc:DataGridColumn = new DataGridColumn;
for(var j:int =0;j<dg.dataProvider.length;j++) {
str+="<tr width=\""+Math.ceil(dg.width)+"\">";
for(var k:int=0; k < dg.groupedColumns.length; k++) {
if(dg.dataProvider.getItemAt(j) != undefined && dg.dataProvider.getItemAt(j) != null) {
if(dg.groupedColumns[k] as AdvancedDataGridColumnGroup) {
str+='<td><table style="text-align:center" border="1" width="100%" height="100%">';
var adgcg:AdvancedDataGridColumnGroup = dg.groupedColumns[k];
if(adgcg.children.length == 1)
{
} else {
str+="<tr>";
for(var m:int=0; m<adgcg.children.length; m++) {
if(!adgcg.children[m].dataField)
{
str += "<td width=\""+Math.ceil(adgcg.children[m].width)+"\" "+style+"></td>";
}
else if(adgcg.children[m].labelFunction != undefined) {
str+="<td width=\""+Math.ceil(adgcg.children[m].width)+"\" "+style+">"+adgcg.children[m].labelFunction(dg.dataProvider.getItemAt(j),adgcg.children[m].dataField)+"</td>";
} else {
str+="<td width=\""+Math.ceil(adgcg.children[m].width)+"\" "+style+">"+dg.dataProvider.getItemAt(j)[adgcg.children[m].dataField]+"</td>";
}
}
str+="</tr>";
}
str+="</table></td>";
}
else if(dg.groupedColumns[k] as AdvancedDataGridColumn)
{
if(!dg.groupedColumns[k].dataField)
{
str += "<td width=\""+Math.ceil(dg.groupedColumns[k].width)+"\" "+style+"></td>";
}
else if(dg.groupedColumns[k].labelFunction != undefined) {
str += "<td width=\""+Math.ceil(dg.groupedColumns[k].width)+"\" "+style+">"+dg.groupedColumns[k].labelFunction(dg.dataProvider.getItemAt(j),dg.groupedColumns[k].dataField)+"</td>";
}
else {
str += "<td width=\""+Math.ceil(dg.groupedColumns[k].width)+"\" "+style+">"+dg.dataProvider.getItemAt(j)[dg.groupedColumns[k].dataField]+"</td>";
}
}
}
}
str += "</tr>";
}
str+="</tbody></table></td></tr></table>";
str = str.replace(myReg,"");
return str;
}
//接Asp。net中 ashx一般处理程序,输出html成Excel文件
public function loadDGInExcel(dg:DataGrid,url:String,titleStr:String):void {
var variables:URLVariables = new URLVariables();
variables.htmltable = convertDGToHTMLTable(dg,titleStr);
var u:URLRequest = new URLRequest(url);
u.data = variables;
u.method = URLRequestMethod.POST;
navigateToURL(u,"_self");
}
public function loadADGInExcel(adg:AdvancedDataGrid,url:String,titleStr:String):void {
var variables:URLVariables = new URLVariables();
variables.htmltable = convertADGToHTMLTable(adg,titleStr);
var u:URLRequest = new URLRequest(url);
u.data = variables;
u.method = URLRequestMethod.POST;
navigateToURL(u,"_self");
}
}
/* asp端代码
<%@ WebHandler Language="C#" Class="JinExcelExport" %>
using System;
using System.Web;
public class JinExcelExport : IHttpHandler {
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "application/vnd.ms-excel";
context.Response.AddHeader("Content-Disposition",
string.Format("p_w_upload;filename=ExportExcel.xls"));
context.Response.Write(context.Request.Form["htmltable"]);
}
public bool IsReusable {
get {
return false;
}
}*/
/*import flash.system.System;
import com.mycompany.dto.SaleDTO;
public function exportAsTSVtoClipBoard():void
{
var TSVString:String = "";
// Run through each field to create the column headers row
TSVString += "Buyer name" + "\t";
TSVString += "Buyer id" + "\t";
TSVString += "Buyer address" + "\t";
TSVString += "Gross Amount" + "\t";
TSVString += "VAT AMount" + "\t";
TSVString += "Net Amount" + "\t";
// Line break
TSVString += "\t" + "\t" + "\t" + "\t" + "\t" + "\n";
// Run through each datagrid row
for each(var item:SaleDTO in this.model.sales)
{
TSVString += item.buyerName + "\t";
TSVString += item.buyerId + "\t";
TSVString += item.buyerAddress + "\t";
TSVString += this.numberFormatter.format(item.grossAmount) + "\t";
TSVString += this.numberFormatter.format(item.vatAmount) + "\t";
TSVString += this.numberFormatter.format(item.netAmount) + "\n";
}
// Copy the TSV string to the clipboard
System.setClipboard(TSVString);
}*/
}
flex toExcel
原创
©著作权归作者所有:来自51CTO博客作者x_jie130的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:flex xmlLoad
下一篇:flex eventBus
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
flex
flex
代码片 html 美图 移动端 媒体查询 -
Flex实践——Flex+Jsp+EJB
这次的实践源于在线电子辞典的应用,这项目的完成者为 我( meteorlWJ)、elevenXL,sya
flex jsp ejb 数据库 mysql -
FLEX:随心所欲FLEX皮肤-FLEX皮肤教程
这是看到关于FLEX皮肤设计方面最好的教程了:利用外部导入SWF文件或者PNG文件,与CSS文件相结合,改变FLEX皮肤样式.
FLEX皮肤 FLEX skin FLEX皮肤教程 css html