通过剪贴板将HTML表格导入Excel

4

我想从我的应用程序中将表格数据复制到Excel中。目前我发现最简单的方法是使用HTML作为中间格式。在阅读了这个问题之后,我能够保留我的数据格式。但是,有没有办法也保持列的宽度呢?我尝试以各种方式设置样式:

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

但是没有结果。有什么想法吗?

额外加分的话,我可以在哪里找到关于Excel HTML“格式”的描述?

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

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

4个回答

5

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

我已经尝试过两种方法,并编写了从.NET直接导出两种方法的库,XML格式肯定不太可能让你失眠。


1
http://msdn.microsoft.com/en-us/library/bb226687(office.11).aspx http://msdn.microsoft.com/en-us/library/bb226693(office.11).aspx - Edo

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>

现在我只需要找到一种方法让浏览器忽略这个值,这样它就不会破坏布局了... :-) - Aaron Digulla

2
你可以在Excel和HTML之间进行“往返旅行”,因此为什么不在Excel中创建一个简单的工作簿,然后将其保存为HTML并检查结果呢?

编辑:去掉了关于拦截“粘贴”事件的无意义内容;我刚意识到你处于“复制”方面,而不是“粘贴”方面。


1
好主意。那确实帮助我弄清楚了一些事情...除了列宽度。 - Aaron Digulla

1
似乎是一个 bug,使用剪贴板不会设置列宽。
解决方案(或变通方法)是在 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中打开,列宽将正确设置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接