在Windows剪贴板复制缓冲区中包含格式信息以粘贴到Excel中

时间:2011-06-09 21:59:33

标签: windows excel copy clipboard paste

我的应用程序将表格数据写入Windows复制缓冲区,供用户粘贴到Excel中。这适用于未格式化的表格数据,包括制表位和单元格和行分隔符的新行。

我想在复制缓冲区中包含格式化数据:网格线,背景颜色等。我可以这样做,如果是这样,我在哪里可以找到编码格式数据的规范?

2 个答案:

答案 0 :(得分:5)

是的,这是可能的(显然,你可以通过剪贴板将格式化的Excel数据从一个正在运行的Excel实例复制到另一个实例,所以它必须是可能的!)

请记住,Windows剪贴板可以同时保存多种格式的内容。 Excel格式化网格内容所需的格式称为BIFF,即二进制交换文件格式。它与Excel实际存储文件的格式相同。可以从Open Office获得BIFF documentation的合理来源。

一旦你弄明白BIFF的基础知识,你会发现生成所需BIFF的最简单方法是从Excel电子表格中复制所需单元格的模型,并检查剪贴板中的内容。

答案 1 :(得分:0)

解决方案是编写一个小程序来转储剪贴板的内容,包括所有不同的格式。然后,将一些Excel复制到剪贴板,转储剪贴板,您将看到如何格式化数据。

这是我编写的应用程序的输出,因此我可以将表格粘贴到富文本应用程序:

xC0FC:
Version:0.9
StartHTML:00000120
EndHTML:00000686
StartFragment:00000154
EndFragment:00000650
SourceURL:about:blank
<html><body>
<!--StartFragment--><table style="max-width: 50%; background: rgb(255, 255, 255);">
  <tbody>
    <tr>
      <td valign="center" style="background-color: #cccccc;" width="180"><b><font size="-1">Enter in "Name"<br>
          </font></b></td>
      <td valign="center">XXX YYY</td>
    </tr>
    <tr>
      <td valign="center" bgcolor="#cccccc" width="300"><b><font size="-1">Enter in "Registration Key"<br>
          </font></b></td>
      <td valign="center">123456</td>
    </tr>
  </tbody>
</table>
<!--EndFragment-->
</body>
</html>

开始/结束是字节偏移量。 “C0FC”文本类型代码似乎每天都在根据我没有弄清楚的模式而变化。您必须进行试验并使用试错法。