如何解决 Windows 剪贴板无法复制过大 Excel 数据的问题呢
发布时间:2023-11-24 11:16:53 所属栏目:Windows 来源:
导读:伴随 Windows 发展已超 25 年的 Raymond Chen,刚刚在一篇《The Old New Thing》开发者博客中调侃了系统剪贴板(clipboard)存在的所谓“最大数据限制”Bug 。他以行数 30 万+的一份大型电子表格文件为例,
伴随 Windows 发展已超 25 年的 Raymond Chen,刚刚在一篇《The Old New Thing》开发者博客中调侃了系统剪贴板(clipboard)存在的所谓“最大数据限制”Bug 。他以行数 30 万+的一份大型电子表格文件为例,当用户打开后选中了所有行、并将之复制到剪贴板后,就会在粘贴至另一应用程序时遇到问题。 假设这个应用程序使用了 GetClipboardData 函数,以检索富文本格式的数据。那你就会遗憾地发现 —— 函数竟然返回了空值(NULL)。 剪贴板未预设可提取图像数据的最大值,其可提取的内容仅显示受图像的可用内存和存储数据地址空间的时间差的限制。 为避免 GetClipboardData 调用失败,主要有两种替代方案 —— 一种是将数据直接放到剪贴板,另一种就声明拥有特定类型的数据、而不直接将它放到剪贴板上。 对于很少被使用、或生成资源耗费过高的数据格式时,常见优化方案是利用剪贴板的延迟渲染(delay-rendered)。 然后在被询问数据的格式时,数据源的使用者会收到一条 WM_RENDERFORMAT 消息 —— 某人想调用该数据,你是否选择即时生成? 因为Excel 本身无法以正式的富文本格式正常运行,其任何一个放置在剪贴板上的此类可视化数据,都是不可逆转的延迟渲染得来的。 然后当另一个程序要求提供富文本格式数据时,Excel 会给出这样的回应 —— 哦,好的,请稍等,我这就帮你去拿。 据悉,富文本并不是数据表的最佳格式,因为它主要是为了文本而设计的。即使可以搞定简单的表格,但更复杂的任务就跑不顺了。 若没有在 30 秒内创建数据,则系统会选择放弃请求、并促成 GetClipboardData 返回 NULL 空值。 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐