原因,为什么您的数据网格和 Excel 之间的直接工作良好,是 DataGridView 组件的实现及其对复制操作的反应,以及您想要将内容粘贴到的应用程序的行为。它可以使用一些特殊的代码,记事本会忽略这些代码。
编辑
所以,现在我非常了解你的兴趣。我不知道它在 C# 中是如何工作的,但在 Java 中看起来是这样。
每次剪贴板中有任何信息时,都会有很多变体,其他应用程序如何使用这些内容。
假设我想从剪贴板中获取内容。我这样做:
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable contents = clipboard.getContents(null);
但现在我应该确定信息应如何查找我的应用程序,您的问题从这里开始。
如果我在剪贴板中有一张图片,我只有1种可能的表示形式:
[mimetype=image/x-java-image;representationclass=java.awt.Image]
如果我有一些来自记事本的文本,那么已经有27个变体:
[mimetype=application/x-java-text-encoding;representationclass=[B]
[mimetype=application/x-java-serialized-object;representationclass=java.lang.String]
[mimetype=text/plain;representationclass=java.io.Reader]
[mimetype=text/plain;representationclass=java.lang.String]
[mimetype=text/plain;representationclass=java.nio.CharBuffer]
and so on...
如果我有一些 Excel 工作表中的单元格,则有56个变体:
[mimetype=application/x-java-text-encoding;representationclass=[B]
[mimetype=text/html;representationclass=java.io.Reader]
[mimetype=text/html;representationclass=java.lang.String]
[mimetype=text/html;representationclass=java.nio.CharBuffer]
[mimetype=text/html;representationclass=[C]
and so on...
甚至还有一个用于 Excel 单元的图像变体!
[mimetype=image/x-java-image;representationclass=java.awt.Image]
这就是为什么可以从 Excel 中复制一些单元格并将它们作为位图粘贴到 Paint 中的原因!当然,记事本是不可能的,因为它的开发人员不想使用这个演示文稿。
现在我们可以看到,剪贴板并没有看起来那么原始。每次应用程序都可以分析内容并获取其最佳变体。
现在您可以尝试查找一些 C# 开发信息。我敢肯定,你会明白的!