tft每日頭條

 > 科技

 > excel剪貼闆為什麼不能全部粘貼

excel剪貼闆為什麼不能全部粘貼

科技 更新时间:2025-01-13 13:23:12

伴随 Windows 發展已超 25 年的 Raymond Chen,剛剛在一篇《The Old New Thing》開發者博客中調侃了系統剪貼闆(clipboard)存在的所謂“最大數據限制”Bug 。他以行數 30 萬 的一份大型電子表格文件為例,當用戶打開後選中了所有行、并将之複制到剪貼闆後,就會在粘貼至另一應用程序時遇到問題。

excel剪貼闆為什麼不能全部粘貼(Windows剪貼闆無法複制超大Excel數據)1

假設這個應用程序使用了 Get­Clipboard­Data 函數,以檢索富文本格式的數據。那你就會遺憾地發現 —— 函數竟然返回了空值(NULL)。

許多人或許會猜測,該問題或與剪貼闆的數據上限有關。

然而 Raymond Chen 指出,事情并非如此 。

剪貼闆未預設可提取數據的最大值,其内容僅受可用内存和地址空間的限制。

為避免 Get­Clipboard­Data 調用失敗,主要有兩種替代方案 —— 一種是将數據直接放到剪貼闆,另一種就聲明擁有特定類型的數據、而不直接将它放到剪貼闆上。

對于很少被使用、或生成資源耗費過高的數據格式時,常見優化方案是利用剪貼闆的延遲渲染(delay-rendered)。

然後在被詢問數據的格式時,數據源的使用者會收到一條 WM_RENDERFORMAT 消息 —— 某人想調用該數據,你是否選擇即時生成?

excel剪貼闆為什麼不能全部粘貼(Windows剪貼闆無法複制超大Excel數據)2

Raymon Chen解釋稱:

Excel 本身無法以富文本格式運行,其放置在剪貼闆上的此類數據,都是延遲渲染得來的。

然後當另一個程序要求提供富文本格式數據時,Excel 會給出這樣的回應 —— 哦,好的,請稍等,我這就幫你去拿。

據悉,富文本并不是數據表的最佳格式,因為它主要是為了文本而設計的。即使可以搞定簡單的表格,但更複雜的任務就跑不順了。

當系統要求剪貼闆的所有者呈現數據時,它會發送消息并等待最多 30 秒返回。

若未能在 30 秒内生成數據,則系統會放棄請求、并導緻 GetClipboardData 返回 NULL 空值。

本例的問題,在于原表實在太大,導緻 Excel 需要超過 30 秒才能生成富文本格式表。後續開發團隊會設想通過特殊手段,來延長此類處理的等待時間。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved