天天看点

Flex将DataGrid数据导出为CSV格式

但是此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");

        }