现在的位置: 首页 > 综合 > 正文

Flex将DataGrid数据导出为CSV格式

2012年09月15日 ⁄ 综合 ⁄ 共 1867字 ⁄ 字号 评论关闭

初始时想使用as3xls(http://code.google.com/p/as3xls/)直接导出Excel xls文件 ,

但是此xls文件在Office 2010尝试打开出现文件损坏的提示, 无法浏览。

因此打算直接导出csv文件。

 

    //导出csv
        public static function exportToCSV(dataGrid:DataGrid):void{ 
            
            var dataProviderCollection:ArrayCollection = dataGrid.dataProvider as ArrayCollection;
            
            var rowCount:int = dataProviderCollection.length; 
            
            var ExcelStr:Array = [];//保存表格所有行
             
            var columnsFiledText:Array = new Array();//列标题
            
            var columnsFiledName:Array = new Array();//列数据字段
            
            for each(var column:DataGridColumn in dataGrid.columns){
                
                //保存Datagrid列标题
                columnsFiledText.push(column.headerText.toString());
                //保存DataGrid列数据字段名
                columnsFiledName.push(column.dataField.toString());
            } 
            //保存标题行
            ExcelStr.push(columnsFiledText.join(",").toString());    
        
            for(var r:int = 0;r<rowCount;r++){
                
                var rowData:Object = dataProviderCollection.getItemAt(r);    
                
                var csvRow:Array =new Array();//定义一行数据    
                
                for each(var col:String in columnsFiledName){  
                    
                    trace(rowData[col]);                                
                    csvRow.push(rowData[col]);//保存每一行的单元格数据
                } 
                //保存一行数据
                ExcelStr.push(csvRow.join(",").toString());
                
            }            
            
            var bytes:ByteArray = new ByteArray();
            
            var fileReference:FileReference = new FileReference();
            
            bytes.writeMultiByte(ExcelStr.join("\r\n"),"gb2312");
            
            fileReference.save(bytes,"test.csv");
            
        }

抱歉!评论已关闭.