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

时间:2018-06-26 20:41:24

标签: python excel python-3.x clipboard

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

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

据我了解,以Excel格式的数据直接以纯文本形式查看时,是以某种方式以XML格式进行的,但是我不知道如何确切地了解XML的外观。我还没有找到可以在粘贴时复制格式信息的文本编辑器;它们都只是删除格式并将单元格内容粘贴为纯文本。我认为复制到剪贴板后应该很简单。

2 个答案:

答案 0 :(得分:1)

最简单的方法可能是使用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中(但是,在上面的示例中,选项卡已替换为空格-选择“编辑”以复制示例数据)。

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

也可以在剪贴板上放置多种格式,但是我不确定在Python中如何实现。


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

有关标准格式,请参见this

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

答案 1 :(得分:0)

您实际上是在问两个问题,所以我将只限于第一个有关剪贴板的问题。您可能应该问另一个有关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

编写的

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

祝你好运!