加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flex前端+java后台实现Flex导出Excel的两种方法,

发布时间:2020-12-15 03:55:52 所属栏目:百科 来源:网络整理
导读:Flex前端+Java后台,要将Flex界面中AdvancedDataGrid的数据导出成Excel文件。有2种方法:? 1.直接在前台导出。? ??? 使用开源项目as3xls,下载个解决了中文乱码的as3xlsUTF8.swc包,加到Flex工程的引用库中。? ??? AS代码,点击“导出Excel”按钮后的函数:

Flex前端+Java后台,要将Flex界面中AdvancedDataGrid的数据导出成Excel文件。有2种方法:?

1.直接在前台导出。?
??? 使用开源项目as3xls,下载个解决了中文乱码的as3xlsUTF8.swc包,加到Flex工程的引用库中。?
??? AS代码,点击“导出Excel”按钮后的函数:

Java代码?

复制代码

?

收藏代码

  1. var?sheet:Sheet?=?new?Sheet(); ??
  2. private?function?export2ExcelHandel(e:MouseEvent):void??
  3. { ??
  4. ????//在前台生成Excel???
  5. ????var?excelFile:ExcelFile=new?ExcelFile(); ??
  6. ????var?arr:ArrayCollection=myTable.dataProvider?as?ArrayCollection; ??
  7. ????for(var?i:int=0;?i<arr.length;?i++) ??
  8. ????{ ??
  9. ????????var?obj:Object=arr[i]; ??
  10. ????????var?j:0; ??
  11. ????????for(var?key:String?in?obj) ??
  12. ????????{ ??
  13. ????????????excelFile.sheets.addItem(generateSheet(0,j,key));??? ??
  14. ????????????excelFile.sheets.addItem(generateSheet(i,obj[key])); ??
  15. ????????????j++; ??
  16. ????????} ??
  17. ????}??????? ??
  18. ????var?mbytes:ByteArray=excelFile.saveToByteArray(); ??
  19. ????var?file:FileReference=new?FileReference(); ??
  20. ????file.save(mbytes,"测试文件.xls");? ??
  21. } ??
  22. ???????????? ??
  23. function?generateSheet(i:int,j:if(!sheet){???? ??
  24. ????????sheet?=?new?Sheet();???? ??
  25. ????????sheet.resize(10,10);???? ??
  26. ????}???? ??
  27. ????sheet.setCell(i,?j,?String(o));???? ??
  28. return?sheet;???? ??
  29. }??????
Java代码??

收藏代码

    new?Sheet();??
  1. private?function?export2ExcelHandel(e:MouseEvent):void??
  2. {??
  3. ????//在前台生成Excel??
  4. ????var?excelFile:ExcelFile=new?ExcelFile();??
  5. ????var?arr:ArrayCollection=myTable.dataProvider?as?ArrayCollection;??
  6. ????for(var?i:int=0;?i<arr.length;?i++)??
  7. ????{??
  8. ????????var?obj:Object=arr[i];??
  9. ????????var?j:0;??
  10. ????????for(var?key:String?in?obj)??
  11. ????????{??
  12. ????????????excelFile.sheets.addItem(generateSheet(0,key));?????
  13. ????????????j++;??
  14. ????????}??
  15. ????}?????????
  16. ????var?mbytes:ByteArray=excelFile.saveToByteArray();??
  17. ????var?file:FileReference=new?FileReference();??
  18. "测试文件.xls");???
  19. }??
  20. ??????????????
  21. function?generateSheet(i:int,j:if(!sheet){??????
  22. ????????sheet?=?new?Sheet();??????
  23. ????????sheet.resize(10,10);??????
  24. ????}??????
  25. return?sheet;??????
  26. }??????


FileReference的save方法在Flash10才支持,?
在Flex工程上右键,属性,Flex Conpiler中把Require Flash Player version:填为10.0.0;在Flex Build Path中加入playerglobal.swc?
,路径为…sdks3.2.0frameworkslibsplayer10playerglobal.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)+'">'; ??
  • 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>";?????????????????? ??
  • ????????}? ????????????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: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>"; ??
  • ????????????????}? ??
  • ????????????????????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; ??
  • }??
  • 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;??
  • "_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)+'">';??
  • 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>";????????????????????
  • ????????}? ????????????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: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>";??
  • ????????????????}???
  • ????????????????????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); ??
  • %> ?
  • (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

      推荐文章
        热点阅读