通过剪贴板将HTML表导入Excel

时间:2009-07-24 12:32:56

标签: html excel width html-table

我想从我的应用程序将表格数据复制到Excel。到目前为止我发现的最简单的方法是使用HTML作为中间格式。阅读this question后,我可以保留数据的格式。有没有办法保持列的宽度?我尝试以各种方式设置样式:

<td style="width:100;">...</td>
<td style="width:100px;">...</td>
<td style="width:100pt;">...</td>

但无济于事。有什么想法吗?

对于奖励积分,是否有可以找到Excel的HTML“格式”描述的地方?

[编辑]更新:我写了一个小工具来转储传输类型“XML样式表”。这是一个自包含的XML文档。它还包含列宽。但是快速测试显示Excel完全忽略了列宽,即使我在两个表之间剪切和粘贴:(因此,除非有人可以告诉我更改此行为的选项,我想在贴上时根本无法格式化列。

[EDIT2]我找到了办法。粘贴后,右下角会出现一个小图标,看起来像工具栏中的粘贴按钮。在这里,您可以选择一些选项。一个是“保持源表的宽度”。

4 个答案:

答案 0 :(得分:4)

我建议使用XML电子表格格式(旧的2002/2003格式 - 生成更简单),而不是Excel导入HTML的能力。

我已经完成了两个并且编写了直接从.NET导出的库,而XML格式肯定不太可能让你失眠。

答案 1 :(得分:3)

不要使用“style”或“px”,例如:

<table border="1" cellpadding="5" cellspacing="0">
<tr>
    <td width="100">test</td>
    <td width="100">test</td>
    <td width="100">test</td>
    <td width="500">test</td>
</tr>
</table>

答案 2 :(得分:2)

您可以从Excel再往返“回程”,那么为什么不在Excel中创建一个简单的工作簿并将其另存为HTML,然后检查结果呢?


编辑:删除了关于拦截“粘贴”事件的废话;我刚刚意识到你处于事物的“复制”方面,而不是“粘贴”方面。

答案 3 :(得分:1)

看起来像一个错误,使用剪贴板不设置列宽。

解决方案(或解决方法)是在Excel中打开HTML文件。

这是一个复制品:

复制并粘贴到Excel中:

<html><body><center>
<table border="1" cellpadding="0" cellspacing="0">
<tr>
<td width=64><strike>testing</strike></td>
<td width=64>one</td>
<td width=233>two</td>
<td width=64>three</td>
</tr>
</table></center></body></html>

不设置列宽!

将上述HTML保存在文件中并在Excel中打开,列宽正确设置。