Flex 带导入导出Excel的DataGrid

  1. 原文网址:http://nlslzf.iteye.com/blog/228038
  2. package  com.yyhy.flex.util  
  3. {  
  4.     import  flash.events.KeyboardEvent;  
  5.     import  flash.events.TextEvent;  
  6.     import  flash.text.TextField;  
  7.     import  flash.text.TextFieldType;  
  8.       
  9.     import  mx.controls.*;  
  10.     import  mx.controls.dataGridClasses.DataGridColumn;  
  11.     //import mx.events.   
  12.     public   class  EIDataGrid  extends  DataGrid  
  13.     {  
  14.         public  function EIDataGrid()  
  15.         {  
  16.             super ();  
  17.             this .addEventListener(KeyboardEvent.KEY_DOWN,KeyDownHandler);  
  18.             this .addEventListener(KeyboardEvent.KEY_UP,KeyUpHandler);  
  19.         }  
  20.         private  function KeyDownHandler(event:KeyboardEvent): void   
  21.             {  
  22.                 if  (event.ctrlKey && ! this .getChildByName( "clipboardProxy" ))  
  23.                 {  
  24.                     // Add an invisible TextField object to the DataGrid   
  25.                     var textField:TextField = new  TextField();  
  26.                     textField.name = "clipboardProxy" ;  
  27.                     this .addChild(textField);  
  28.                     textField.visible = false ;  
  29.       
  30.                     textField.type = TextFieldType.INPUT;  
  31.                     textField.multiline = true ;  
  32.       
  33.                     // Populate the TextField with selected data in TSV format   
  34.       
  35.                     textField.text = getTextFromItems(this .selectedItems);  
  36.                     //textField.text = getTextFromItems(dataGrid.dataProvider.source);   
  37.                     textField.setSelection(0 , textField.text.length -  1 );  
  38.       
  39.                     // Listen for textInput event   
  40.       
  41.                     textField.addEventListener(TextEvent.TEXT_INPUT,  
  42.                     clipboardProxyPasteHandler);  
  43.       
  44.                     // Set player-level focus to the TextField   
  45.       
  46.                     systemManager.stage.focus = textField;  
  47.                 }//end if   
  48.             }//end function   
  49.   
  50.   
  51.             private  function KeyUpHandler(event:KeyboardEvent): void   
  52.             {  
  53.                 if  (!event.ctrlKey)  
  54.                 {  
  55.                     var textField:TextField = TextField(this .getChildByName( "clipboardProxy" ));  
  56.                     if  (textField)  
  57.                     {  
  58.                         this .removeChild(textField);  
  59.                     }//end if   
  60.                 }//end if   
  61.             }//end function   
  62.   
  63.             private  function clipboardProxyPasteHandler(event:TextEvent): void   
  64.             {  
  65.                 // Extract values from TSV format and populate the DataGrid   
  66.       
  67.                 var items:Array = getItemsFromText(event.text);  
  68.                 for  each (var item:Object in items)  
  69.                     this .dataProvider.addItem(item);  
  70.             }//end function   
  71.   
  72.             private  function getItemsFromText(text:String):Array  
  73.             {  
  74.                 var rows:Array = text.split("\n" );  
  75.                 if  (!rows[rows.length -  1 ])  
  76.                     rows.pop();  
  77.       
  78.                 var columns:Array = this .columns;  
  79.                 var itemsFromText:Array = [];  
  80.       
  81.                 for  each (var rw:String in rows)  
  82.                 {  
  83.                     var fields:Array = rw.split("\t" );  
  84.       
  85.                     var n:int  = Math.min(columns.length, fields.length);  
  86.                     var item:Object = {};  
  87.                     for  (var i: int  =  0 ; i < n; i++)  
  88.                         item[columns[i].dataField] = fields[i];  
  89.                     itemsFromText.push(item);  
  90.                  }  
  91.       
  92.                 return  itemsFromText;    
  93.             }//end function   
  94.         private  function getTextFromItems(items:Array):String  
  95.             {  
  96.                 var columns:Array = this .columns;  
  97.                 var textFromItems:String = "" ;  
  98.                 //add datagrid headtext    
  99.                 for  each (var i: DataGridColumn in columns)  
  100.                 {  
  101.                     textFromItems += i.headerText + "\t" ;  
  102.                 }  
  103.                 textFromItems += "\n" ;  
  104.                       
  105.                 for  each (var it:Object in items)  
  106.                 {  
  107.                       
  108.                     for  each (var c: DataGridColumn in columns)  
  109.                         textFromItems += it[c.dataField] + "\t" ;  
  110.                     textFromItems += "\n" ;  
  111.                 }  
  112.       
  113.                 return  textFromItems;  
  114.             }//end function   
  115.     }  

你可能感兴趣的:(C++,c,Excel,Flex,Flash)