Windows環境下物件的連結與嵌入

才智咖 人氣:1.9W

[摘要]Windows環境下的物件的連結與嵌入的操作是微軟辦公套件中非常重要、非常實用又極易混淆的一個功能,本文重點對二者的區別進行了介紹。

Windows環境下物件的連結與嵌入

[關鍵詞]Windows Office 物件 連結 嵌入 OLE

物件的連結和嵌入(Object Linking and Embedding,簡稱OLE)是 Windows應用程式提供的一種插入功能,可以使用連結或嵌入的方式在一個程式的文件中插入另一個程式的文件也可以說是一種把一個檔案(或其一部分)插入到另一個檔案之中的技術,例如把Excel圖表加入到PowerPoint簡報或Word文件,或在WORD裡面嵌入一段MPEG等等應用。通過OLE插入的資料是“活生生”可編輯的,而不是原始資料的一個靜態映像。可以說OLE為所有在Windows環境下相容的應用提供了一種通用整合的策略,是整合Office大家庭各個應用的功能、構造複合文件的強大工具,是微軟為了不同應用程式之間的檔案可以互相傳遞資料而指定的一種規格,使得Windows環境更象組裝不同應用物件的工作場地。

在解釋連結與嵌入之前,我們要首先明白複合文件的概念。一個複合文件是包含不同應用程式生成的物件文件。這種文件就是一種可以存放物件的所有者,它既可以包含嵌入物件,也可以包含連結物件。這樣的處理機制可以使使用者集中精力於複合文件,而不是每個用於生成文件中物件的應用,甚至當需要時可以使用這些應用程式的功能,而無需使用者實際切換到另一個應用程式。

如果使用者使用過連結與嵌入操作,會發現就表面效果而言,連結和嵌入很相似,即一個文件內部出現了另一個文件的資料,但兩者的後臺運作機制卻是不同的。本篇文章中,我們討論的重點在於這兩種功能的區別。我們可以通過了解連結與嵌入的特徵以後再來理解這二者的區別。

連結和嵌入都是把資訊從一個文件插入另一個文件(複合文件)中。嵌入物件是指包含在原始檔中並且插入目標檔案中的資訊(物件)。一旦嵌入,該物件成為目標檔案的一部分。對嵌入物件所做的更改反映在目標檔案中。物件被嵌入後,即使更改了原始檔,目標檔案中的`資訊也不會改變,嵌入物件插入後,就變成目標檔案的一部分,而不再是原始檔一部分,雙擊嵌入物件可在源程式中開啟它。連結物件是指該物件在原始檔中建立,然後插入到目標檔案中,並且維持兩個檔案之間的連線關係。更新原始檔時,目標檔案中的連結物件也可以得到更新。綜上所述,我們可以做如下總結:

插入複合文件中的連結物件具有以下特徵:(1)連結的物件實際存在於複合文件之外的檔案中,如果這些檔案被刪除了,連結就丟失了。如果它們被移動了,就必須建立新的連結。由於複合文件中只包含對連結的物件的引用,所以複合文件本身體積是很小的;(2)連結可以跨越網路而存在。即一個複合文件可能存在於一個計算機上,而其中的連結檔案卻可能存在於另一臺計算機上,如果一個複合文件被移動到另一個系統上,那麼所有的連結檔案也必須隨之移動。而嵌入物件具有以下特徵:(1)嵌入物件是和複合文件儲存在一起的,所以嵌入的物件可以在本地進行編輯,使用者不需要離開復合文件,並且對嵌入的物件的改變不會影響到原始檔案;(2)嵌入的物件可以和包含它的複合文件一起移動,從而使使用者可以輕易地改變文件;(3)包含嵌入物件的複合文件是很大的,這是因為複合文件包含構成物件的所有資料,而不象連結那樣單純地引用外部的物件。

在連結和嵌入操作中,提供資料的一方稱為服務器應用,接收資料的一方稱為容器應用。嵌入操作把伺服器應用的資料本身複製到容器應用的文件,但在連結操作中,容器應用的文件只是包含了一個指向伺服器應用文件的指標。所以,二者的區別可以這樣來理解:首先,如果在容器檔案中嵌入了一個物件,容器檔案的體積會變大;如果使用連結,容器檔案的體積不會發生很大的變化,因為它只包含一個指向物件的連結,而不是包含了物件本身。其次,如果你把帶有嵌入物件的檔案從一臺PC移到另一臺PC,被嵌入物件也隨著檔案一起移動。如果移動了帶有連結物件的檔案,被連結物件所在的檔案不會隨之移動,且連結一般不再有效。最後,連結與嵌入最重要的區別在於:當你編輯連結或嵌入物件時,產生的結果不同。雙擊被連結的物件,伺服器應用啟動並開啟原始的資料檔案,所有對連結物件的改動都影響到原始檔案(當然也會在容器應用內被連結的物件上反映出來)。例如,假設一個Word文件連結了一個Excel工作表,則在Word文件內對Excel工作表的任何改動,都直接影響到原始的Excel工作表。同樣,如果你用伺服器應用直接開啟並編輯原始檔案,如用Excel程式編輯工作表,下次開啟容器檔案即Word文件時也可以看到相應的改動結果。而對於嵌入操作,在容器應用內雙擊被嵌入的物件,伺服器應用啟動,但這時的任何改動只對嵌入物件有效,不影響原始文件。

總而言之,我們可以說,連結和嵌入物件的主要差別是存放資料的方式,以及放到目標檔案後的更新方式。物件連結後,只有更改了原始檔時,資料才會被更新,連結的資料儲存在原始檔中,目標檔案中只儲存原始檔的位置,並顯示一個連結資料的標記,如果不希望檔案過大,可使用連結物件。嵌入的物件不象連結的物件那樣,一個嵌入的物件是直接儲存在複合文件中的。一個嵌入的物件保持和創造它的應用之間的聯絡,用滑鼠器雙擊物件,就可以開啟這個應用,從而對物件進行編輯;連結的物件也可以是一些操作,被在本地啟用,如重現和顯示,但是它們不能在本地被編輯,而是為進行編輯開啟一個獨立的視窗。如果連結物件中修改了原始資訊,只需更新連結即可更新包含OLE物件的文件,也可以將連結設定為自動更新。如果重新命名或移動其中任何一者,則必須重新建立連結。