在Excel與Flex之間粘貼數(shù)據(jù)
試用過Google Spreadsheets的朋友,可能發(fā)現(xiàn)其一個有意思的特性,我們可以直接將Excel中的多行數(shù)據(jù)直接復(fù)制插入到Google Spreadsheets中(OpenOffice也可以直接復(fù)制過去),沒嘗試過的朋友可以馬上按如下步驟測試下:
在Excel(或OpenOffice Calc)中選擇多行數(shù)據(jù),敲Ctrl+C鍵,復(fù)制選擇的多行數(shù)據(jù):
然后到Google Spreadsheets,敲Ctrl+V鍵,前面復(fù)制的單元格就被復(fù)制過來了:
這是如何做到的呢?其實很簡單,在Excel(OpenOffice Calc)中,當(dāng)多個單元格被復(fù)制時,這些單元格的數(shù)據(jù)是以tab鍵分隔一行行數(shù)據(jù)(tab-separated values (TSV))存放在剪貼板中的,當(dāng)這些數(shù)據(jù)被粘貼到Google Spreadsheets中時,這些TSV格式的數(shù)據(jù)被解析并被相應(yīng)插入到Google Spreadssheets中了。
既然知道其中的奧妙,那么剩下的就是在Flex中實現(xiàn)同樣的效果了。以下是我們的實現(xiàn)思路,可以在Excel和Flex相互直接復(fù)制粘貼數(shù)據(jù)。
我們的思路的精妙所在是隱藏文本(TextField)組件的使用:
在DataGrid中,當(dāng)按下Ctrl鍵時,我們創(chuàng)建一個隱藏的文本(TextField)組件,并將焦點定位給它,這樣,我們就可以接受任何通過Ctrl+V粘貼過來的數(shù)據(jù)。相應(yīng)的我們也將DataGrid選擇行數(shù)據(jù)以TSV格式拷貝到TextField組件中,并且將所有的文本選擇,這樣我們使用Ctrl+C操作就可以復(fù)制當(dāng)前行所有數(shù)據(jù)了。
監(jiān)聽隱藏文件組件的textInput事件。如果有任何數(shù)據(jù)被粘貼的話,那么在這里數(shù)據(jù)將被解析,并插入到DataGrid中。
當(dāng)Ctrl鍵釋放后,移除隱藏的文本組件。
以下是完整實現(xiàn)示例代碼:












































































































posted on 2010-10-25 09:56 aiaiwoo 閱讀(400) 評論(0) 編輯 收藏 所屬分類: AC3/FLEX