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

flex表格导出

发布时间:2020-12-15 04:31:22 所属栏目:百科 来源:网络整理
导读:package com.syExportTool { ?? ?import com.as3xls.xls.ExcelFile; ?? ?import com.as3xls.xls.Sheet; ?? ?import com.sybuild.sdxt.core.component.sytable.component.SytableScript.AdvancedDataGridColumns; ?? ? ?? ?import flash.net.FileReference; ?
package com.syExportTool { ?? ?import com.as3xls.xls.ExcelFile; ?? ?import com.as3xls.xls.Sheet; ?? ?import com.sybuild.sdxt.core.component.sytable.component.SytableScript.AdvancedDataGridColumns; ?? ? ?? ?import flash.net.FileReference; ?? ?import flash.utils.ByteArray; ?? ? ?? ?import mx.collections.ArrayCollection; ?? ?import mx.collections.HierarchicalCollectionView; ?? ?import mx.collections.HierarchicalData; ?? ?import mx.collections.IList; ?? ?import mx.controls.AdvancedDataGrid; ?? ?import mx.controls.Alert; ?? ?import mx.controls.Button; ?? ?import mx.controls.advancedDataGridClasses.AdvancedDataGridColumn; ?? ?import mx.controls.advancedDataGridClasses.AdvancedDataGridListData; ?? ?import mx.rpc.events.HeaderEvent; ?? ?import mx.utils.ObjectUtil; ?? ? ?? ?public class ExportButton extends Button ?? ?{ ?? ??? ?public function ExportButton() ?? ??? ?{ ?? ??? ??? ?super(); ?? ??? ?} ?? ??? ?/** ?? ??? ? * 导出带普通的表 ?? ??? ? * ?? ??? ? * */ ?? ??? ?public? function? Export(dg:AdvancedDataGrid,xlsName:String):FileReference { ?? ??? ??? ? ?? ??? ??? ?var _sheet:Sheet = new Sheet();? //Excel选项卡 ?? ??? ??? ?var file:FileReference=new FileReference(); //保存对话框 ?? ??? ??? ?var xls:ExcelFile=new ExcelFile(); ?? ??? ??? ?var _fields:Array = []; //需要呈现的字段数组??? ? ?? ??? ??? ? ?? ??? ??? ?if(dg.dataProvider==null){ ?? ??? ??? ??? ?var columns:Array=dg.columns; //表列统计  ?? ??? ??? ??? ?_sheet.resize(0,dg.columnCount); //设置当前选项卡 有多少行多少列 ?? ??? ??? ??? ?for(var i:uint=0;i<columns.length;i++){ ?? ??? ??? ??? ??? ?var dgc:AdvancedDataGridColumn=columns[i]; ?? ??? ??? ??? ??? ?_sheet.setCell(0,i,dgc.headerText); //设置单元格 参数:1、行号;2、列号;3、单元格的值 ?? ??? ??? ??? ??? ?_fields.push(dgc);? //保存字段 ?? ??? ??? ??? ?} ?? ??? ??? ??? ?xls.sheets.addItem(_sheet);? //把选项卡写入Excel文件中 ?? ??? ??? ??? ?var bytes:ByteArray=xls.saveToByteArray(); ?? ??? ??? ??? ?file.save(bytes,xlsName); ?? ??? ??? ?}else{ ?? ??? ??? ??? ?var data:ArrayCollection=dg.dataProvider as ArrayCollection; ?? ??? ??? ??? ?var iList:IList = data as IList; //表数据源 ?? ??? ??? ??? ? ?? ??? ??? ??? ?var rowCount:int=iList.length; //有多少行数据 ?? ??? ??? ??? ? ?? ??? ??? ??? ?var columns:Array=dg.columns; //表列统计  ?? ??? ??? ??? ? ?? ??? ??? ??? ?_sheet.resize(rowCount + 1,dg.columnCount); //设置当前选项卡 有多少行多少列 ?? ??? ??? ??? ? ?? ??? ??? ??? ?//循环所有列 ?? ??? ??? ??? ?for(var i:uint=0;i<columns.length;i++){ ?? ??? ??? ??? ??? ?var dgc:AdvancedDataGridColumn=columns[i]; ?? ??? ??? ??? ??? ?_sheet.setCell(0,dgc.headerText); //设置单元格 参数:1、行号;2、列号;3、单元格的值 ?? ??? ??? ??? ??? ?_fields.push(dgc);? //保存字段 ?? ??? ??? ??? ?} ?? ??? ??? ??? ? ?? ??? ??? ??? ?//循环所有数据 ?? ??? ??? ??? ?for (var r:int=0;r<rowCount;r++) { ?? ??? ??? ??? ??? ?var record:Object=iList.getItemAt(r); ?? ??? ??? ??? ??? ?//把数据写入某行某列 ?? ??? ??? ??? ??? ?for(var c:uint=0;c<_fields.length;c++){ ?? ??? ??? ??? ??? ??? ?  _sheet.setCell(r+1,c,record[_fields[c].dataField]); //设置单元格 参数:1、行号;2、列号;3、单元格的值 ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ?} ?? ??? ??? ??? ?xls.sheets.addItem(_sheet);? //把选项卡写入Excel文件中 ?? ??? ??? ??? ?var bytes:ByteArray=xls.saveToByteArray(); ?? ??? ??? ??? ?file.save(bytes,xlsName); ?? ??? ??? ?} ?? ??? ??? ?return file; ?? ??? ?} ?? ??? ? ?? ??? ?/** ?? ??? ? * 导出树形结构的表 ?? ??? ? * ?? ??? ? * */ ?? ??? ?public? function? ExportTree(dg:AdvancedDataGrid,xlsName:String):FileReference { ?? ??? ??? ? ?? ??? ??? ?var _sheet:Sheet = new Sheet();? //Excel选项卡 ?? ??? ??? ?var _fields:Array = []; //需要呈现的字段数组??? ? ?? ??? ??? ?var data:HierarchicalCollectionView=dg.dataProvider as HierarchicalCollectionView; ?? ??? ??? ?var hitdata:HierarchicalData=data.source as HierarchicalData; ?? ??? ??? ?var arr:ArrayCollection=hitdata.source as ArrayCollection; ?? ??? ??? ?var childdata:ArrayCollection=new ArrayCollection; ?? ??? ??? ?var child:ArrayCollection=new ArrayCollection; ?? ??? ??? ? ?? ??? ??? ?for(var k:int=0;k<arr.length;k++){ ?? ??? ??? ??? ?if(arr.getItemAt(k).children==null){ ?? ??? ??? ??? ??? ?child=arr; ?? ??? ??? ??? ??? ?childdata.addItem(child.getItemAt(k)); ?? ??? ??? ??? ?}else{ ?? ??? ??? ??? ??? ?var obj:Object=new Object; ?? ??? ??? ??? ??? ?obj.tm=""; ?? ??? ??? ??? ??? ?obj.a1=arr.getItemAt(k).a1 ?? ??? ??? ??? ??? ?obj.a2=arr.getItemAt(k).a2 ?? ??? ??? ??? ??? ?obj.a3=arr.getItemAt(k).a3 ?? ??? ??? ??? ??? ?obj.a4=arr.getItemAt(k).a5 ?? ??? ??? ??? ??? ?obj.a5=arr.getItemAt(k).a1 ?? ??? ??? ??? ??? ?obj.a6=arr.getItemAt(k).a6 ?? ??? ??? ??? ??? ?child=arr.getItemAt(k).children as ArrayCollection; ?? ??? ??? ??? ??? ?child=new? ArrayCollection(ObjectUtil.copy(child.source) as Array); ?? ??? ??? ??? ??? ?child.addItemAt(obj,0); ?? ??? ??? ??? ??? ?for(var j:int=0;j<child.length;j++){ ?? ??? ??? ??? ??? ??? ?childdata.addItem(child.getItemAt(j)); ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?if(childdata!=null||childdata.length>0){ ?? ??? ??? ??? ? ?? ??? ??? ??? ?var iList:IList = childdata as IList; //表数据源 ?? ??? ??? ??? ? ?? ??? ??? ??? ?var rowCount:int=iList.length; //有多少行数据 ?? ??? ??? ??? ? ?? ??? ??? ??? ?var columns:Array=dg.columns; //表列统计  ?? ??? ??? ??? ? ?? ??? ??? ??? ?_sheet.resize(rowCount + 1,dg.columnCount); //设置当前选项卡 有多少行多少列 ?? ??? ??? ??? ? ?? ??? ??? ??? ?//循环所有列 ?? ??? ??? ??? ?for(var i:uint=0;i<columns.length;i++){ ?? ??? ??? ??? ??? ?var dgc:AdvancedDataGridColumns=columns[i]; ?? ??? ??? ??? ??? ?_sheet.setCell(0,dgc.headerText); //设置单元格 参数:1、行号;2、列号;3、单元格的值 ?? ??? ??? ??? ??? ?_fields.push(dgc);? //保存字段 ?? ??? ??? ??? ?} ?? ??? ??? ??? ? ?? ??? ??? ??? ?//循环所有数据 ?? ??? ??? ??? ?for (var r:int=0;r<rowCount;r++) { ?? ??? ??? ??? ??? ?var record:Object=iList.getItemAt(r); ?? ??? ??? ??? ??? ?//把数据写入某行某列 ?? ??? ??? ??? ??? ?for(var c:uint=0;c<_fields.length;c++){ ?? ??? ??? ??? ??? ??? ?if(record[_fields[c].dataField]==null){ ?? ??? ??? ??? ??? ??? ??? ?record[_fields[c].dataField]="--";?? ? ?? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ??? ?  _sheet.setCell(r+1,record[_fields[c].dataField]); //设置单元格 参数:1、行号;2、列号;3、单元格的值 ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ?} ?? ??? ??? ??? ? ?? ??? ??? ??? ?var xls:ExcelFile=new ExcelFile(); ?? ??? ??? ??? ?xls.sheets.addItem(_sheet);? //把选项卡写入Excel文件中 ?? ??? ??? ??? ?var bytes:ByteArray=xls.saveToByteArray(); ?? ??? ??? ??? ?var file:FileReference=new FileReference(); //保存对话框 ?? ??? ??? ??? ?file.save(bytes,xlsName); ?? ??? ??? ??? ?return file; ?? ??? ??? ?}else{ ?? ??? ??? ??? ? ?? ??? ??? ??? ?return null; ?? ??? ??? ?} ?? ??? ??? ? ?? ??? ?} ?? ??? ?/** ?? ??? ? * 导出带隐藏列的表 ?? ??? ? * ?? ??? ? * */ ?? ??? ?public? function? ExportDOC(dg:AdvancedDataGrid,xlsName); ?? ??? ??? ? ?? ??? ??? ?? }else{ ?? ??? ??? ??? ? ? ?? ??? ??? ??? ?var data:ArrayCollection=dg.dataProvider as ArrayCollection; ?? ??? ??? ??? ? ?? ??? ??? ??? ?var iList:IList = data as IList; //表数据源 ?? ??? ??? ??? ? ?? ??? ??? ??? ?var rowCount:int=iList.length; //有多少行数据 ?? ??? ??? ??? ? ?? ??? ??? ??? ?var columns:Array=dg.columns; //表列统计  ?? ??? ??? ??? ? ?? ??? ??? ??? ?_sheet.resize(rowCount + 1,dg.columnCount); //设置当前选项卡 有多少行多少列 ?? ??? ??? ??? ? ?? ??? ??? ??? ?//循环所有列 ?? ??? ??? ??? ?for(var i:uint=0;i<columns.length;i++){ ?? ??? ??? ??? ??? ?var dgc:AdvancedDataGridColumn=columns[i]; ?? ??? ??? ??? ??? ? ?? ??? ??? ??? ??? ?if(dgc.headerText.indexOf("备注")!=-1){ ?? ??? ??? ??? ??? ?}else if(dgc.headerText.indexOf("编码")!=-1){ ?? ??? ??? ??? ??? ?}else if(dgc.headerText.indexOf("dType")!=-1){ ?? ??? ??? ??? ??? ?}else{ ?? ??? ??? ??? ??? ??? ?_fields.push(dgc);? //保存字段 ?? ??? ??? ??? ??? ??? ?_sheet.setCell(0,dgc.headerText); //设置单元格 参数:1、行号;2、列号;3、单元格的值 ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ? ?? ??? ??? ??? ?} ?? ??? ??? ??? ?//循环所有数据 ?? ??? ??? ??? ?for (var r:int=0;r<rowCount;r++) { ?? ??? ??? ??? ??? ?var record:Object=iList.getItemAt(r); ?? ??? ??? ??? ??? ?//把数据写入某行某列 ?? ??? ??? ??? ??? ?for(var c:uint=0;c<_fields.length;c++){ ?? ??? ??? ??? ??? ??? ?  _sheet.setCell(r+1,xlsName); ?? ??? ??? ?} ?? ??? ??? ?return file; ?? ??? ?} ?? ??? ? ?? ?} }

(编辑:李大同)

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

    推荐文章
      热点阅读