在Excel與Flex之間貼上資料

2021-08-30 07:41:18 字數 1481 閱讀 4762

在excel與flex之間貼上資料

試用過google spreadsheets的朋友,可能發現其乙個有意思的特性,我們可以直接將excel中的多行資料直接複製插入到google spreadsheets中(openoffice也可以直接複製過去),沒嘗試過的朋友可以馬上按如下步驟測試下:

在excel(或openoffice calc)中選擇多行資料,敲ctrl+c鍵,複製選擇的多行資料:

然後到google spreadsheets,敲ctrl+v鍵,前面複製的單元格就被複製過來了:

這是如何做到的呢?其實很簡單,在excel(openoffice calc)中,當多個單元格被複製時,這些單元格的資料是以tab鍵分隔一行行資料(tab-separated values (tsv))存放在剪貼簿中的,當這些資料被貼上到google spreadsheets中時,這些tsv格式的資料被解析並被相應插入到google spreadssheets中了。

既然知道其中的奧妙,那麼剩下的就是在flex中實現同樣的效果了。以下是我們的實現思路,可以在excel和flex相互直接複製貼上資料。

我們的思路的精妙所在是隱藏文字(textfield)元件的使用:

在datagrid中,當按下ctrl鍵時,我們建立乙個隱藏的文字(textfield)元件,並將焦點定位給它,這樣,我們就可以接受任何通過ctrl+v貼上過來的資料。相應的我們也將datagrid選擇行資料以tsv格式拷貝到textfield元件中,並且將所有的文字選擇,這樣我們使用ctrl+c操作就可以複製當前行所有資料了。

監聽隱藏檔案元件的textinput事件。如果有任何資料被貼上的話,那麼在這裡資料將被解析,並插入到datagrid中。

當ctrl鍵釋放後,移除隱藏的文字元件。

以下是完整實現示例**:

<?xml version="1.0"?>

import flash.events.keyboardevent;

private function datagridkeydownhandler(event:keyboardevent):void

}private function datagridkeyuphandler(event:keyboardevent):void

}private function clipboardproxypastehandler(event:textevent):void

private function getitemsfromtext(text:string):array

;for (var i:int = 0; i < n; i++)

item[columns[i].datafield] = fields[i];

itemsfromtext.push(item);

}return itemsfromtext;

}private function gettextfromitems(items:array):string

return textfromitems;

}]]>

flex資訊與webservices之間怎麼互動

flex中有個的標籤能夠負責flex與webservices之間互動 引數名1 值1 引數名2 值2 元件表示webservice的乙個方法,屬性name值必須與webservice中的定義名稱相同 標籤下傳遞引數,需要注意的是引數的名稱及順序必須與webservice中的定義相同。以下 定義了乙個...

vim與系統貼上板之間

根據平台不同,要分兩種情況。先用下面命令確定你屬於哪一種,vim version grep clipboard情況一,如果結果裡你找到加號開頭的 clipboard,恭喜你,你的vim沒問題,是你姿勢問題。d,x,c,s也一樣,用之前前面加 如果想偷懶用y直接把內容複製到系統剪貼簿,需要到vim配置...

Excel對於篩選後單元格進行「複製」與「貼上」

複製 很簡單,有的說需要選中區域,然後選擇 可見單元格 ctrl c ctrl v,這當然可以,也可用快捷鍵 ctrl 進行可見單元格選擇。其實新版本直接ctrl c ctrl v就ok。貼上 這是一大難點,也是我寫這篇的原因方便自己以後翻閱。1,網上看到乙個excel外掛程式,貼上的時候可以選擇 ...