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

发布于 2024-11-14 19:00:13 字数 153 浏览 3 评论 0 原文

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

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

My application writes tabular data to the windows copy buffer for the user to paste into Excel. This works fine for unformatted tabular data including tab-stops and new lines for cell and row delimeters.

I'd like to include formatting data in the copy buffer: grid lines, background colors, etc. Can I do this, and if so, where can I find a specification for encoding the formatting data?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

相对绾红妆 2024-11-21 19:00:13

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

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

一旦了解了 BIFF 的基础知识,您就会发现生成所需 BIFF 的最简单方法是从 Excel 电子表格复制所需单元格的模型,然后检查剪贴板中的内容。

Yes, it's possible (obviously, you can copy formatted Excel data from one running instance of Excel to another via the clipboard, so it must be possible!)

Remember that the Windows clipboard can hold things in more than one format at the same time. The format you want for Excel formatted grid stuff is called BIFF, that is, The Binary Interchange File Format. It's the same format as Excel actually stores files in. A reasonable source of BIFF documentation is available from Open Office.

Once you figure out the basics of BIFF, you'll find that the easiest way to generate the BIFF you want is to copy a model of the cells you want from an Excel spreadsheet and examine what's in the clipboard.

我乃一代侩神 2024-11-21 19:00:13

解决方案#1

借助此 如何使用 Python 将 HTML 代码复制到剪贴板?

我使用 Excel 创建表格示例。选择表格后:

  • 另存为
  • 保存类型:带有选择选项的网页
  • 发布
    Excel 对话框

然后,如果您使用文本编辑器打开它,您可以看到 html,对其进行修改或使用代码生成不同的值,并使用 the_RR PutHtml(html_table_str) href="https://stackoverflow.com/questions/55698762/how-to-copy-html-code-to-clipboard-using-python">55698762 将其放入剪贴板或制作您自己的代码另一种语言。

然后你可以粘贴到Excel中,它就完美地工作了。

示例代码:

html_table_str = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\r\n<HTML>\r\n<HEAD></HEAD>\r\n<body>\r\n<table>\r\n<tr>\r\n<td style='border:.5pt solid black;color:white;font-weight:700;background:#3A3838'>x</td>\r\n<td style='border:.5pt solid black;color:white;font-weight:700;background:#3A3838'>y</td>\r\n</tr>\r\n<tr>\r\n<td style='border:.5pt solid black;'>5</td>\r\n<td style='border:.5pt solid black;color:red'>6</td>\r\n</tr>\r\n</table>\r\n</body>\r\n</html>"
PutHtml(html_table_str)

解决方案 #2

您也可以简单地将 html 文档文本直接粘贴到 Excel 中,但我不确定它是否适用于较旧的 Excel 版本,并且与解决方案 #1 不同,它在 MS 中不起作用词或观点。

示例 html :

<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<HTML>
    <HEAD></HEAD>
    <body>
        <table>
            <tr>
                <td style='border:.5pt solid black;color:white;font-weight:700;background:#3A3838'>x</td>
                <td style='border:.5pt solid black;color:white;font-weight:700;background:#3A3838'>y</td>
            </tr>
            <tr>
                <td style='border:.5pt solid black;'>5</td>
                <td style='border:.5pt solid black;color:red'>6</td>
            </tr>
        </table>
    </body>
</html>

“在此处输入图像描述"

Solution #1

Found a solution with the help of this How to copy HTML code to clipboard using Python?

I use excel to create an example of my table. With the table selected :

  • Save as
  • Save as type: Web Page with selection option
  • Publish
    excel dialog

Then if you open this with a text editor you can see the html, modify it or generate it with different value with your code and use PutHtml(html_table_str) provided by the_RR 55698762 to put it inside clipboard or make your own code in another language.

You can then paste into excel and it work perfectly.

sample code:

html_table_str = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\r\n<HTML>\r\n<HEAD></HEAD>\r\n<body>\r\n<table>\r\n<tr>\r\n<td style='border:.5pt solid black;color:white;font-weight:700;background:#3A3838'>x</td>\r\n<td style='border:.5pt solid black;color:white;font-weight:700;background:#3A3838'>y</td>\r\n</tr>\r\n<tr>\r\n<td style='border:.5pt solid black;'>5</td>\r\n<td style='border:.5pt solid black;color:red'>6</td>\r\n</tr>\r\n</table>\r\n</body>\r\n</html>"
PutHtml(html_table_str)

Solution #2

You can also simply paste html document text directly into excel but i'm not sure if it work with older excel version and unlike the solution #1, doesn't work in ms word or outlook.

sample html :

<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<HTML>
    <HEAD></HEAD>
    <body>
        <table>
            <tr>
                <td style='border:.5pt solid black;color:white;font-weight:700;background:#3A3838'>x</td>
                <td style='border:.5pt solid black;color:white;font-weight:700;background:#3A3838'>y</td>
            </tr>
            <tr>
                <td style='border:.5pt solid black;'>5</td>
                <td style='border:.5pt solid black;color:red'>6</td>
            </tr>
        </table>
    </body>
</html>

enter image description here

辞慾 2024-11-21 19:00:13

解决方案是编写一个小程序来转储剪贴板的内容,包括所有不同的格式。然后,将一些 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”文本类型代码似乎根据我尚未弄清楚的模式每天都在变化。您必须进行试验并使用试用版和试用版。错误。

The solution is to write a small program that dumps the contents of the clipboard, including all the different formats. Then, copy some Excel into the clipboard, dump the clipboard, and you will see revealed how to format the data.

Here is the output from an app that I wrote, so I can paste a table to rich text apps:

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>

The Start/End are byte offsets. The "C0FC" text type code seems to vary from day to day according to a pattern I haven't figured out. You'll have to experiment and use trial & error.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文