從IE複製資料到Word ,其中發生了什嗎?

來源:互聯網
上載者:User

    不知道你有沒有注意,如果你從IE複製表格式資料到MS Word,會顯得很慢,但是表格的格式和樣式都會儲存下來,但是在別的瀏覽器,比如Firefox,Opera等複製表格式資料到MS Word,則會快很多,效果和複製到記事本是一樣的。難道是因為不同的複製來源(不同的瀏覽器),使得在剪貼簿的資料不一樣嗎?

    先看一下,從IE複製到Word(2003和2007效果是差不多的,就不了)裡的效果:

 

    如果從Firefox、Opera複製到Word,效果如(上面一段是從Opera,下面那一段是從Firefox複製的):

    在運行裡輸入"clipbrd.exe",查看剪貼簿(沒有?在這裡可以下載>)上的內容(上面的是IE,下面的是Firefox,有“略微的區別”):

    複製資料時,注意到word的狀態列提示“串連伺服器”的字樣,於是拿出Wireshark,抓包分析了一下,果然(注意第四項,word發送了一個Http Get請求,請求的內容恰好是該網頁的css檔案,"HTTP GET /inc/ftp.css HTTP/1.1”):

 

    顯然,如果是表格式資料的話,CSS一定定義了樣式,於是Word自己拿了過來並解析,將表格樣式顯示了出來,而從別的瀏覽器粘貼時,卻沒有這一步,自然就沒有樣式了。

    上面說到,複製到剪貼簿上的資料也“略微的差別”,的確是這種差別導致了,粘貼到word時產生的不同行為。Windows中剪貼簿有兩種,一種是Windows標準剪貼簿,一種是Ole(Object Linking and Embedding,對象連結和嵌入)剪貼簿,但實際上,標準剪貼簿的API介面雖然沒變,但是內部實現實際上已經使用Ole資料轉送機制來實現了。Ole支援UDT(Uniform Data Transfer,統一資料轉送),並可以通過拖放操作實現剪貼簿的剪下、複製和粘貼等操作。OLE剪貼簿除了擁有標準Windows剪貼簿的效能外,還支援傳輸使用者自訂的剪貼簿格式,並能夠在傳輸資料時綁定OLE格式(如字型、字型大小等)。

    所以從IE複製資料時,使用的是Ole剪貼簿,綁定了Ole格式,而格式的來源又是在網路上的css檔案,所以word才會去擷取這個css檔案。微軟的word、excel、ie等都可以被稱作OLE文檔包容器,粘貼時自然能夠識別到Ole格式的資料。而別的瀏覽器複製的時候並沒有這種Ole格式,自然粘貼時只是純文字了。如果是Ole格式的資料,但是粘貼時不時Ole容器,比如記事本,就會當作普通的文本複製。這就是為什麼有人喜歡先把網頁上的內容先粘貼到記事本,清楚掉格式,然後再複製到Word中的原因。

    如果想瞭解更多關於:OLE(對象串連和嵌入),UDT(統一資料轉送)可以參考《COM本質論》、《Visual C++技術內幕》 。
    如何使用Ole剪貼簿進行編程可以參考MSDN:
    http://msdn.microsoft.com/en-us/library/6www2be1(VS.80).aspx
    http://support.microsoft.com/kb/83659/zh-cn

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.