Flex代码:

/**** * 导出excel的方法 * */ private function exportExcel():void{ ExportExcel.loadDGInExcel(this.dataGrid,'ExcelExport.jsp'); } <mx:DataGrid id="dataGrid" allowMultipleSelection="true" selectable="true" verticalScrollPolicy="on" x="0" y="0" width="100%" doubleClickEnabled="true" itemDoubleClick="dataGridDoubleClick(event)" height="85%" dataProvider="{attributeDefineList}" textAlign="center" > <mx:columns> <mx:DataGridColumn headerText="属性类型ID" dataField="typeDescription"/> <mx:DataGridColumn headerText="原子属性" dataField="ifatom" labelFunction="yesNoVerdict" /> <mx:DataGridColumn headerText="依赖考试生成" dataField="ifrelytestcreate" labelFunction="yesNoVerdict" /> <mx:DataGridColumn headerText="依赖考试过滤" dataField="ifrelytestfilter" labelFunction="yesNoVerdict" /> <mx:DataGridColumn headerText="属性内部代码" dataField="adcode"/> <mx:DataGridColumn headerText="属性业务编码" dataField="adbcode"/> <mx:DataGridColumn headerText="名称" dataField="name"/> <mx:DataGridColumn headerText="简称" dataField="shortname"/> <mx:DataGridColumn headerText="多/单根节点" dataField="ifsinglenode" labelFunction="yesNoVerdict" /> <mx:DataGridColumn headerText="有无具体值" dataField="isvalue" labelFunction="yesNoVerdict" /> <mx:DataGridColumn headerText="实现方法" dataField="implementation"/> <mx:DataGridColumn headerText="操作" itemRenderer="ui.form.ufmDTAttrDefineOper" /> </mx:columns> </mx:DataGrid>

ExportExcel.as脚本:

package util { import flash.errors.*; import flash.events.*; import flash.external.*; import flash.net.URLRequest; import flash.net.URLRequestMethod; import flash.net.URLVariables; import flash.net.navigateToURL; import mx.controls.Alert; import mx.controls.DataGrid; import mx.controls.dataGridClasses.DataGridColumn; public class ExportExcel { public function ExportExcel() { } /** 在导出数据的时候有可能出现单元格数据长度过长而导致Excel在显示时 * 出现科学计数法或者#特殊符号,在此设置单元格宽度比例WIDTHSCALE,在 * 代码中每个单元格的宽度扩展适当的比例值WIDTHSCALE。 */ private static var WIDTHSCALE:Number=2.0; /** * 将DataGrid转换为htmltable * @author rentao * @param: dg 需要转换成htmltable的DataGrid * @return: String */ private static function convertDGToHTMLTable(dg:DataGrid):String { //设置默认的DataGrid样式 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; //检索DataGrid的 headercolor if(dg.getStyle("headerColor") != undefined) { hcolor = [dg.getStyle("headerColor")]; } else { hcolor = dg.getStyle("headerColors"); } // Alert.show(hcolor+""); var x :String = "" ; if(hcolor == null){ x = "0x323232" ; }else{ x = Number((hcolor[0])).toString(16); } // str+= '<table width="'+dg.width+'" border="1"><thead><tr width="'+dg.width+'" style="background-color:#' +Number((hcolor[0])).toString(16)+'" mce_style="background-color:#' +Number((hcolor[0])).toString(16)+'">'; str+= '<table align="center" width="'+dg.width+'" border="1"><thead><tr width="'+dg.width+'" style="background-color:#' +x+'" mce_style="background-color:#' +x+'">'; //设置tableheader数据(从datagrid的header检索headerText信息) for(var i:int = 0;i<dg.columns.length;i++) { colors = dg.getStyle("themeColor"); if(dg.columns[i].dataField == null || dg.columns[i].dataField == ""){}else{ //表示不是操作列 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>"; 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] as DataGridColumn).dataField == null || (dg.columns[k] as DataGridColumn).dataField == ""){}else{ //表示的是字段列 if((dg.columns[k] as DataGridColumn).labelFunction != undefined) { var dataGridColumn:DataGridColumn = dg.columns[k] as DataGridColumn ; // str += "<td width=/""+Math.ceil((dg.columns[k] as DataGridColumn).width*WIDTHSCALE)+"/" "+style+">"+(dg.columns[k] as DataGridColumn).labelFunction(dg.dataProvider.getItemAt(j),dg.columns[k].dataField)+"</td>"; str += "<td align='center' width=/""+Math.ceil(dataGridColumn.width*WIDTHSCALE)+"/" "+style+">"+dataGridColumn.labelFunction(dg.dataProvider.getItemAt(j),dataGridColumn)+"</td>"; // //"+dg.columns[k].labelFunction(dg.dataProvider.getItemAt(j),dg.columns[k].dataField)+" } else { str += "<td align='center' width=/""+Math.ceil(dg.columns[k].width*WIDTHSCALE)+"/" "+style+">"+dg.dataProvider.getItemAt(j)[(dg.columns[k] as DataGridColumn).dataField]+"</td>"; } } } } str += "</tr>"; } str+="</table>"; return str; } /** * 将制定的DataGrid加载到Excel文件,此方法传入一个htmltable字符串参数到后台Script脚本,然后浏览器给用户提供一个Excel下载 * @author Chenwenfeng * @params dg 需要导入的数据源DataGrid * @params url excel文件下载路径 */ public static function loadDGInExcel(dg:DataGrid,url:String):void { //设置URLVariables参数变量,动态增加属性htmltable 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"); //"_self" 指定当前窗口中的当前帧。 //"_blank" 指定一个新窗口。 //"_parent" 指定当前帧的父级。 //"_top" 指定当前窗口中的顶级帧。 } } }

ExcelExport.jsp:

<%@ page language="java"%> <%@ page contentType="application/msexcel;charset=UTF-8" pageEncoding="UTF-8"%> <% request.setCharacterEncoding("UTF-8"); response.setHeader("Content-disposition","attachment; filename=excel.xls"); String str = request.getParameter("htmltable"); out.print(str); %>

中文问题:
查看源代码时发现JSP文件中写死的中文为乱码,则在JSP文件:

<%@ page contentType="text/html; charset=GBK" %> <% response.setContentType("application/msexcel;charset=UTF-8"); %> <HTML> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <head><title>Test</title></head> <body> <% request.setCharacterEncoding("UTF-8"); response.setHeader("Content-disposition","attachment; filename=excel.xls"); String str = request.getParameter("htmltable"); out.print(str); %> </body> </HTML>

转载于:https://www.cnblogs.com/JPAORM/archive/2011/03/27/2509823.html

Flex导出Excel相关推荐

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

    Flex前端+Java后台,要将Flex界面中AdvancedDataGrid的数据导出成Excel文件.有2种方法: 1.直接在前台导出.      使用开源项目as3xls,下载个解决了中文乱码的 ...

  2. Flex导出Excel (as3xls)

    /** * 导出Excel文件 by DataGrid */ public static function exportToExcelByDg(dg:DataGrid, xlsName:String= ...

  3. DataGrid导出Excel

    在Adobe的RIA开发环境下,flex并没有导出Excel的功能,在完成此类功能的时候,在网上Google了很多相关文章,其中提到了利用Flex将DataGrid的数据拼凑成字符串然后利用JSP获取 ...

  4. vue实现纯前端导入与解析excel表格文件,导出Excel

    一.安装相关依赖 npm install --save xlsx file-saver 二.使用 import * as XLSX from 'xlsx/xlsx.mjs' const FileSav ...

  5. Vue2中如何将表格导出Excel

    Vue导出Excel 一.安装vue-json-excel npm install vue-json-excel -S 二.main.js中引入 import JsonExcel from 'vue- ...

  6. 基于云开发模式的评分小程序总结!二维码、导出excel表格等实用干货!

    基于云开发的打分小程序开发总结 1.TAKE打分小程序 1.1.项目简介 1.1.1.开发背景 1.1.2.项目介绍 1.2.项目效果图 1.2.1.主页 1.2.2.评分流程页 1.2.3.项目详情 ...

  7. 如何封装一个导入导出excel的组件

    前言 在日常作期间可能会遇到一些需要利用excel文件批量导入数据的项目,例如在我们管理用户的时候,如果新增用户较多一个个添加用户就会比较麻烦,所以可以自己封装一个可以导入excel表格的组件.使用者 ...

  8. java struts2 excel上传_Java Struts2 实现数据库数据导出Excel文件

    HTML: 导出 Struts.xml true application/vnd.ms-excel;charset=GBK excelStream attachment;filename=${file ...

  9. Java springMVC POI 导出 EXCEL

    2019独角兽企业重金招聘Python工程师标准>>> 思路 : 将需要导出的数据存放在一个List中 创建一个EXCEL表 注意 XSSFWorkbook 只能操作2007以上的版 ...

最新文章

  1. 使用ASP.NET操作IIS7中使用应用程序
  2. python爬虫流程-Python爬虫程序架构和运行流程原理解析
  3. OpenCV基本绘图
  4. ArrayList不是并发安全的?那么在高并发环境下怎么使用集合
  5. c语言的那些小秘密pdf下载,C语言的那些小秘密之函数的调用关系.pdf
  6. M2Eclipse:Maven Eclipse插件无法搜索远程库的解决方法
  7. 程序员与「中台」的爱恨交错
  8. java验证ie版本的正则表达式_JS 浏览器类型判断,IE版本类型判断,正则表达式判断。...
  9. QT 图片与base64互转
  10. java斗地主比大小_斗地主算法的设计与实现–如何比较两手牌的大小
  11. CSS盒模型完整介绍
  12. Android视频播放项目总结之 使用第三方Vitamio库,开发万能播放器(一)
  13. Semantic-UI某些图标不能显示+资源引入两种方式
  14. 服务器无线桥接技巧,服务器无线桥接设置方法
  15. 网易云视频获取标题和时长
  16. 利用o(nlogn)的时间复杂度对某一个区间进行质因数分解
  17. android 9 8 对比,iPhone 8plus在安卓机中相当于什么层次?看看它与小米9的对比吧...
  18. GPT系列简介与gpt训练(nanoGPT)
  19. AHOI2019N省联考凉凉记
  20. Cesium中Primitive与Entity详细介绍

热门文章

  1. 落花美眷,终究抵不过逝水流连,回忆我的2016,展望2017。
  2. LeedCode Q344 Reverse String(Easy)
  3. ios基础篇(十二)——UINavgationController的使用(三)ToolBar
  4. 通过JCONSOLE监控TOMCAT的JVM使用情况
  5. AndroidManifest.xml中的android:name是否带.的区别
  6. eclipse git插件简单使用
  7. 【C++】类型转换(const_cast、dynamic_cast、static_cast、reinterpret_cast)
  8. 服务器是怎么工作的?(一)——DHCP工作原理剖析
  9. eclipse默认项目部署路径(.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps) 改为自己的tomcat真实路径方法
  10. 日本台式计算机配置,电脑配置