天天看點

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");

        }