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

flex 通过as3xls包来实现datagrid输出保存到excel。并处理中文乱

发布时间:2020-12-15 01:20:23 所属栏目:百科 来源:网络整理
导读:最近一直被flex的dg保存到xls文件困扰,今天终于解决了。 首先看一下代码: /* 输出xls新方法 ??=========================================? ??=========================================? ? */ ???import mx.controls.dataGridClasses.DataGridColumn; ??

最近一直被flex的dg保存到xls文件困扰,今天终于解决了。

首先看一下代码:

/* 输出xls新方法 ??=========================================? ??=========================================? ? */ ???import mx.controls.dataGridClasses.DataGridColumn; ???import com.as3xls.xls.Cell; ???import mx.collections.ArrayCollection; ???import com.as3xls.xls.Sheet; ???import com.as3xls.xls.ExcelFile; ??? ???private var fileReference:FileReference; ???private var xls:Class; ???private var sheet:Sheet; ??? ???[Bindable] ???private var fields:Array = new Array(); ??? ???private function fileReference_Cancel(event:Event):void ???{ ????fileReference = null; ???} ??? ???private function exportToExcel():void ???{ ????sheet = new Sheet(); ????var dataProviderCollection:ArrayCollection =netInspectLog; ????var rowCount:int = dataProviderCollection.length; ????sheet.resize(rowCount + 1,netInspectlogDataGrid.columnCount); ????var columns:Array = netInspectlogDataGrid.columns; ????var i:int = 0; ????for each (var field:DataGridColumn in columns){ ?????fields.push(field.dataField.toString());/*? .toString() */ ?????sheet.setCell(0,i,field.dataField.toString()); ?????i++; ????} ???? ????for(var r:int=0; r < rowCount; r++) ????{ ?????var record:Object = dataProviderCollection.getItemAt(r); ?????/*insert record starting from row no 2 else ?????headers will be overwritten*/ ?????insertRecordInSheet(r+1,sheet,record); ????} ????var xls:ExcelFile = new ExcelFile(); ????xls.sheets.addItem(sheet); ???? ????var bytes: ByteArray = xls.saveToByteArray(); ????var fr:FileReference = new FileReference(); ????fr.save(bytes,"SampleExport.xls");? ???} ???private function insertRecordInSheet(row:int,shet:Sheet,recod:Object):void ???{ ????var colCount:int = netInspectlogDataGrid.columnCount; ????for(var c:int=0; c < colCount; c++) ????{ ?????var i:int = 0; ?????for each(var field:String in fields){ ??????for each (var value:String in recod){ ???????if (recod[field]==null) ????????recod[field]=""; ???????if (recod[field].toString() == value) ????????shet.setCell(row,value); ??????} ??????i++; ?????} ????} ???} ??注意的是:一定要把as3xls-1.0.1.swc包导入。它可以用来建立xls文件,并写入信息。as3xls-1.0.swc也可以实现建立xls文件,并写入信息,但是它输出的中文是乱码的,而as3xls-1.0.1.swc可以处理中文乱码。这样就可以实现了dg->xls并且无乱码转存了。

(编辑:李大同)

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

    推荐文章
      热点阅读