我如何将二维列表的内容复制到剪贴板,格式为 Excel?

how would I go about copying the contents of a 2-dimensional list to the clipboard, formatted for Excel?

我在 Python 实用程序中有一个二维列表,它使用 PyQt 写入 table。我还想将该列表中的所有数据复制到剪贴板,但需要注意的是,它必须格式化才能插入 excel 文档或 Word 中的 table(如 excel -格式化数据一般是).

那么,问题有两个方面: 1) 如何按字符串格式化数据以匹配 Excel 的标准,以及 2) 如何将其复制到剪贴板?

据我了解,Excel 格式的数据,当直接作为纯文本查看时,在某种程度上是 XML 格式的,但我不知道如何找出确切的内容XML 貌似。我还没有找到在粘贴时复制格式信息的文本编辑器;他们都只是删除格式并将单元格内容粘贴为纯文本。复制到剪贴板应该非常简单,我想。

您实际上是在问两个问题,所以我将仅限于第一个关于剪贴板的问题。您可能应该问另一个关于 Excell 行为的问题,因为它与 Python.

完全无关

将文本发送到剪贴板的最佳方式似乎是使用 Tk,因为它通常与 Python 一起提供,因此更便于携带:

from Tkinter import Tk
r = Tk()
r.withdraw()
r.clipboard_clear()
r.clipboard_append('i can has clipboardz?')
r.update() # now it stays on the clipboard after the window is closed
r.destroy()

这段代码是雾化器写的here

我还建议您在询问之前多搜索一下。直到现在我都不知道该怎么做。

祝你在 Excel 方面好运!

最简单的方法可能是使用 TAB 分隔值,例如:

15.117  0.681   39.871      533.47
14.771  0.755   47.559      652.65
11.849  0.682   47.561      660.76
10.92   0.63    46.908      658.26
10.087  0.613   47.649      676.23

这在 Word 和 Excel 中粘贴得很好(但是,制表符在上面的示例中被替换为空格 - 选择 'edit' 复制示例数据)。

对于 Word 中的真实 table,您可以将数据格式化为 html table。

也可以在剪贴板上放置多种格式,但我不确定在 Python 中如何做到这一点。


Mark Ransom's answer 使用 Windows API 复制到剪贴板。这允许您设置剪贴板格式。

有关标准格式,请参阅 this

对于 html 格式,您需要 add some header data