Flex前端+Java后台,要将Flex界面中AdvancedDataGrid的数据导出成Excel文件。有2种方法:
1.直接在前台导出。
使用开源项目as3xls,下载个解决了中文乱码的as3xlsUTF8.swc包,加到Flex工程的引用库中。
AS代码,点击“导出Excel”按钮后的函数:
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代码:
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:
<%@ 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);
%>
分享到:
相关推荐
使用as3xls-1.0.1.SWC包做的Flex界面DateGrid数据导出Excel表格。
标题与描述:“FLEX导出EXCEL支持合并隐藏单元格” 该标题与描述明确指出了一个关键的功能点:在Flex框架下开发的应用程序能够导出数据到Excel,并且这一过程支持对单元格进行合并以及隐藏特定单元格的能力。这对于...
AdvancedDataGrid导出复杂表头excel
标题中的“flex导出excel”指的是使用Adobe Flex技术来生成并导出Excel文件。Flex是一种基于ActionScript的开源框架,主要用于构建富互联网应用程序(RIA)。它允许开发者使用MXML和ActionScript编写用户界面,然后...
flex 导出excel工具包 用法如下: import com.as3xls.xls.ExcelFile; import com.as3xls.xls.Sheet; import mx.collections.ArrayCollection; import mx.controls.DataGrid; import mx.controls.dataGridClasses....
Flex利用JSP导出Excel Flex利用JSP导出Excel
标题中的“Flex导出Excel之as3xls”指的是在Adobe Flex应用中,使用as3xls库来实现将数据导出为Microsoft Excel文件的功能。as3xls是一个开源的ActionScript 3库,它允许Flex开发者在客户端创建和操作Excel文档,而...
<![CDATA[ import mx.controls.CheckBox; import mx.controls.Alert;... 导出" click="onCreate()"/> (data as Object)} " /> </mx:DataGridColumn> </mx:WindowedApplication>
flex导出成excel部分代码
在Flex中导出Excel文件,通常分为以下几个步骤: 1. **集成as3xls库**:首先,你需要将as3xls库添加到你的Flex项目中。这可以通过将as3xls的SWC文件引入到你的类路径中完成。在Flex Builder或IntelliJ IDEA等IDE中...
"flex前台直接导出excel"这个话题,指的是在使用Adobe Flex这一前端框架时,如何直接在客户端生成并导出Excel文件,而不需要通过服务器端如JSP或Java进行处理。这种方式可以避免因为字符编码问题导致的乱码,同时也...
Flex前端+Java后台,要将Flex界面中AdvancedDataGrid的数据导出成Excel文件。有2种方法:
要实现Flex Air导出Excel的功能,通常需要借助第三方库或者服务。一种常见的方法是使用Apache POI库,这是一个Java库,可以用来创建、修改Microsoft Office文件,包括Excel。虽然Flex本身是基于ActionScript,但可以...
导出Excel的过程通常涉及以下几个步骤: 1. 数据准备:收集adgDataGrid中的数据,包括列名和对应的数据行。对于多层标题头,你需要获取每一层标题的信息,并且组织成Excel能识别的格式。 2. 创建Excel工作簿对象:...
1. 数据导出至Excel.doc(包括当前导出方法小结,自己的示例,参考的网站) 2. poi-3.7-20101029.jar:当前最新的稳定的操作Excel的开发包 3. AirExcel.rar,as3xls.rar:air下Excel开发包 4. csvlib-1.4.1.rar:生成...
虽然上述代码描述了一个基本的Flex导出Excel文件的实现过程,但实际应用中可能会遇到各种问题,比如数据格式化、文件兼容性、性能优化等。开发者在使用时需要根据实际情况调整和完善代码。此外,Flex作为Adobe的技术...
在Flex Air应用中导出Excel并支持中文是一项常见的需求,特别是在数据可视化和报表生成的场景下。Flex Air是Adobe提供的一款基于Flash Player的桌面应用程序开发框架,它允许开发者创建具有丰富用户界面的桌面应用...
flex中dataGrid导出数据到excel中,不存在乱码问题