将剪贴板中的数据粘贴到正确格式的Excel中

时间:2012-12-26 14:02:54

标签: c# .net excel

在性能分析器中,我从剪贴板中的复制数据。

enter image description here

然后将其粘贴到 excel文件中。 结果是:

enter image description here

但是当我将其粘贴到文本编辑器中时,我看起来很简单:

  

功能名称包含样品独家样品包含样品   %独家样品%
  [clr.dll] 26 26 39.39 39.39
  Bee.Client.Common.BeeRight.CheckRightsForBeeUser()10 0 15.15 0.00
  Bee.Client.Common.BeeRight.get_Invoke()6 0 9.09 0.00
  Bee.Client.Common.BeeRight.Method(string,string)13 0 19.70 0.00
  Bee.Client.Common.Custom.FmCustom..ctor()9 0 13.64 0.00

那么你能告诉我,我该如何归档这种效果?

谢谢!

更新

我会试着解释一下。 我的winform应用程序中有DataGridView。我写了一些函数,它将数据从表复制到剪贴板(结果看起来像我的例子中的文本)。如果我将这个文本从剪贴板粘贴到excel,结果将是带有剪贴板数据的excel文件,但根本没有格式化,这个excel将难以阅读。

我想知道,他们如何从表(图1)这样的方式准备数据,当我将其粘贴到Excel时,它具有格式化(图2),当我将其粘贴到文本编辑器中时,我们看到了原始文本。

1 个答案:

答案 0 :(得分:5)

原因,为什么datagrid和Excel之间的直接工作是好的,是DataGridView组件的实现及其对Copy操作的反应,以及应用程序的行为,您要将内容粘贴到其中。它可以使用一些特殊代码,记事本会忽略它们。

修改

所以,现在我很了解你的兴趣。我不知道它在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-cells的Image-variant!

[mimetype=image/x-java-image;representationclass=java.awt.Image]

这就是为什么可以从Excel复制一些单元格并将它们粘贴到Paint作为位图的原因!当然,Notepad是不可能的,因为它的开发人员不想使用这个演示文稿。

现在我们可以看到,剪贴板看起来并不是那么原始。每次应用程序都可以分析内容并采用最佳变体。

现在您可以尝试为C#开发找到一些信息。我敢肯定,你会明白的!