`
天助者自助
  • 浏览: 10702 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Flex导出DataGrid数据

    博客分类:
  • Flex
阅读更多
Flex前端+Java后台,要将Flex界面中AdvancedDataGrid的数据导出成Excel文件。有2种方法:

1.直接在前台导出。
    使用开源项目as3xls,下载个解决了中文乱码的as3xlsUTF8.swc包,加到Flex工程的引用库中。
    AS代码,点击“导出Excel”按钮后的函数:
Java代码 复制代码 收藏代码
var sheet:Sheet = new Sheet();  
private function export2ExcelHandel(e:MouseEvent):void 
{  
    //在前台生成Excel  
    var excelFile:ExcelFile=new ExcelFile();  
    var arr:ArrayCollection=myTable.dataProvider as ArrayCollection;  
    for(var i:int=0; i<arr.length; i++)  
    {  
        var obj:Object=arr[i];  
        var j:int=0;  
        for(var key:String in obj)  
        {  
            excelFile.sheets.addItem(generateSheet(0,j,key));     
            excelFile.sheets.addItem(generateSheet(i,j,obj[key]));  
            j++;  
        }  
    }         
    var mbytes:ByteArray=excelFile.saveToByteArray();  
    var file:FileReference=new FileReference();  
    file.save(mbytes,"测试文件.xls");   
}  
              
function generateSheet(i:int,j:int,o:Object):Sheet{  
    if(!sheet){      
        sheet = new Sheet();      
        sheet.resize(10,10);      
    }      
    sheet.setCell(i, j, String(o));      
    return sheet;      
}     
Java代码  收藏代码
var sheet:Sheet = new Sheet(); 
private function export2ExcelHandel(e:MouseEvent):void 

    //在前台生成Excel 
    var excelFile:ExcelFile=new ExcelFile(); 
    var arr:ArrayCollection=myTable.dataProvider as ArrayCollection; 
    for(var i:int=0; i<arr.length; i++) 
    { 
        var obj:Object=arr[i]; 
        var j:int=0; 
        for(var key:String in obj) 
        { 
            excelFile.sheets.addItem(generateSheet(0,j,key));    
            excelFile.sheets.addItem(generateSheet(i,j,obj[key])); 
            j++; 
        } 
    }        
    var mbytes:ByteArray=excelFile.saveToByteArray(); 
    var file:FileReference=new FileReference(); 
    file.save(mbytes,"测试文件.xls");  

             
function generateSheet(i:int,j:int,o:Object):Sheet{ 
    if(!sheet){     
        sheet = new Sheet();     
        sheet.resize(10,10);     
    }     
    sheet.setCell(i, j, String(o));     
    return sheet;     
}     

FileReference的save方法在Flash10才支持,
在Flex工程上右键,属性,Flex Conpiler中把Require Flash Player version:填为10.0.0;在Flex Build Path中加入playerglobal.swc
,路径为…\sdks\3.2.0\frameworks\libs\player\10\playerglobal.swc

2.通过调JSP或Servlet导出。
AS代码:
Java代码 复制代码 收藏代码
public static function ToExcel(dg:AdvancedDataGrid,name:String)  
{  
    //调用JSP  
    var url:String="http://localhost:8080/XXX/Export/ExcelExport.jsp";  
    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");   
}  
 
private static function convertDGToHTMLTable(dg:AdvancedDataGrid):String {  
    //Set default values  
    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;  
         
    //Retrieve the headercolor  
    if(dg.getStyle("headerColor") != undefined) {  
        hcolor = [dg.getStyle("headerColor")];  
    } else {  
        hcolor = dg.getStyle("headerColors");  
    }                  
         
    str+= '<head><meta http-equiv="Content-Type" content="text/htm; charset=utf-8"></head><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");  
    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;  

Java代码  收藏代码
public static function ToExcel(dg:AdvancedDataGrid,name:String) 

    //调用JSP 
    var url:String="http://localhost:8080/XXX/Export/ExcelExport.jsp"; 
    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");  

 
private static function convertDGToHTMLTable(dg:AdvancedDataGrid):String { 
    //Set default values 
    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; 
        
    //Retrieve the headercolor 
    if(dg.getStyle("headerColor") != undefined) { 
        hcolor = [dg.getStyle("headerColor")]; 
    } else { 
        hcolor = dg.getStyle("headerColors"); 
    }                 
        
    str+= '<head><meta http-equiv="Content-Type" content="text/htm; charset=utf-8"></head><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"); 
    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; 



ExcelExport.jsp放在后台XXX工程的WebRoot下的Export文件夹中。
ExcelExport.jsp:
Java代码 复制代码 收藏代码
<%@ page language="java"%>  
<%@ page contentType="application/msexcel;charset=UTF-8" 
    pageEncoding="UTF-8"%>  
<%  
request.setCharacterEncoding("UTF-8");  
//String instr=request.getParameter("filename");  
response.setHeader("Content-disposition","attachment; filename=excel.xls");  
response.setCharacterEncoding("UTF-8");  
String str = request.getParameter("htmltable");  
out.print(str);  
%> 
分享到:
评论

相关推荐

    flex中dataGrid导出数据到excel中

    flex中dataGrid导出数据到excel中,不存在乱码问题

    flex 把datagrid的内容导出到Excel

    要实现在Flex中导出Datagrid到Excel,我们可以利用第三方库,例如As3Xls。As3Xls是一个用于读写Microsoft Excel文件的ActionScript 3库。它允许我们直接在Flash Player环境中操作Excel文件,无需服务器端处理。 ...

    将Flex DataGrid数据导出到Excel中

    本教程将详细介绍如何实现从Flex DataGrid导出数据到Excel的功能。 首先,让我们了解Flex DataGrid。它是一个强大的组件,用于显示二维数据集,通常包含可排序和可分页的列。DataGrid可以绑定到各种数据源,包括...

    flex导出复杂excel

    AdvancedDataGrid导出复杂表头excel

    Flex中组件datagrid导出Excel

    本主题将深入探讨如何在Flex中实现组件DataGrid的数据导出功能,使其能够生成Excel文件供用户下载和处理。 DataGrid是Flex中常用的一个组件,它用于展示结构化数据,通常用于表格形式的展示。在Flex中,我们可以...

    Flex的DataGrid导出Excel

    2. **捕获DataGrid数据**:在导出Excel之前,你需要获取DataGrid中显示的所有数据。这可以通过遍历DataGrid的items或使用Flex提供的数据绑定机制来实现。将每个单元格的数据保存到一个二维数组中,以模拟Excel的行和...

    flex中将dataGrid中的数据导出到excel中

    flex中将dataGrid中的数据导出到excel中,不存在乱码问题

    Flex FooterSpark DataGrid 表格制作

    Flex FooterSpark DataGrid 是Adobe Flex框架中用于创建高级数据展示组件的一个重要工具,它在桌面和Web应用中广泛用于数据网格的展示。Flex是基于ActionScript和MXML的开源框架,用于构建富互联网应用程序(RIA)。...

    flex通过java后台讲datagrid导出为excel

    将Flex中的Datagrid数据导出到Excel是常见的需求,特别是在需要用户下载和进一步处理大量数据时。 首先,让我们深入理解Flex的Datagrid组件。Datagrid是一种灵活的数据展示工具,它可以显示来自不同数据源的数据,...

    利用java 后台导出Flex DataGrid为Excel

    在Java后台导出Flex DataGrid为Excel是一项常见的需求,特别是在数据可视化和数据分析场景中。Flex DataGrid是一种用于展示大量结构化数据的组件,而Excel则是处理和存储表格数据的流行工具。下面我们将深入探讨如何...

    利用ASP架构将flex中的datagrid数据导出为excel表格方式。

    总之,利用ASP架构导出Flex DataGrid数据到Excel,需要在客户端和服务器端进行协调,涉及数据转换、服务器文件操作和通信协议等多个环节。通过合理的设计和优化,可以实现高效且可靠的导出功能。

    Flex-DataGrid源码及资料

    Flex DataGrid是一款在Adobe Flex开发环境中广泛使用的组件,主要用于展示和操作大量结构化的数据。它是一种灵活的表格视图,可以轻松地实现数据的排序、筛选、分页等功能。在这个"Flex-DataGrid源码及资料"的压缩包...

    flex datagrid 数据保存到excel以及从excel读取数据

    要将Flex Datagrid的数据保存到Excel,我们需要实现一个数据转换和导出的过程。这通常涉及到将ArrayCollection或其他数据结构转换为Excel兼容的格式,然后利用特定的库或API写入到Excel文件。在提供的标签“源码”中...

    flex datagrid 导出excel的as

    将flexdatagrid的数据导出到excel 只需传入datagrid id 以及要导出的excel名称

    flex DataGrid 导出Xls

    flex DataGrid 导出Xls private function insertRecordInSheet(row:int,sheet:Sheet,record:Object):void { var colCount:int = rebateByItemDG.columnCount; for(var c:int; c ; c++) { var i:int = 0; ...

    具有分页功能的flex的DataGrid

    在这个特定的项目"具有分页功能的flex的DataGrid"中,我们主要关注两个核心功能:分页和数据导出到Excel。 分页功能是提高用户界面性能和用户体验的关键元素,尤其是在处理大数据集时。Flex中的DataGrid可以通过...

    flex datagrid to excel

    综上所述,实现“flex datagrid to excel”功能,你需要理解Flex的DataGrid组件、数据处理、文件操作以及ActionScript编程,将DataGrid中的数据转换为Excel可读格式,并通过用户交互将数据导出到本地文件系统。

    Flex导出Excel之as3xls(包括datagrid全选功能)

    标题中的“Flex导出Excel之as3xls”指的是在Adobe Flex应用中,使用as3xls库来实现将数据导出为Microsoft Excel文件的功能。as3xls是一个开源的ActionScript 3库,它允许Flex开发者在客户端创建和操作Excel文档,而...

    Flex datagrid导出为Excel文件、CSV文件和到剪贴板

    使用flash builder测试成功,绝对可以使用,使用的swc包都包含在里面 主要作用:使用flex把datagrid里面的数据(ArrayCollection)导出为Excel文件、CSV文件和导出到剪贴板

Global site tag (gtag.js) - Google Analytics