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

我想从我的应用程序复制表格数据到Excel。 到目前为止,我发现的最简单的方法是使用HTML作为中介格式。 阅读完这个问题之后 ,我可以保存数据的格式。 有没有办法保持列的宽度呢? 我试图以各种方式设置风格:

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

但无济于事。 有任何想法吗?

对于奖励积分,有没有一个地方可以findExcel的HTML“格式”的描述?

[编辑]更新:我写了一个小工具来转储传输types“XML样式表”。 这是一个自包含的XML文档。 它也包含列宽。 但是一个快速的testing表明,即使我在两个表格之间剪切和粘贴,Excel也完全忽略了列的宽度:(所以除非有人能告诉我一个改变这个行为的选项,我想在粘贴的时候根本无法格式化列。

[EDIT2]我find了一个方法。 粘贴完成后,在右下angular会出现一个小图标,看起来像工具栏中的粘贴button。 在这里,你可以select一些选项。 一个是“保留源表的宽度”。

我推荐使用XML Spreadsheet格式(旧的2002/2003之一 – 更简单的生成)来导入Excel导入HTML的function。

我已经完成了这两个和书面库直接从.NET出口,XML格式肯定不太可能让你失眠。

不要使用“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> 

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


编辑 :删除胡说关于拦截“粘贴”事件; 我只是意识到你处于事物的“复制”一边,而不是“粘贴”的一面。

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

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

这是一个repro:

复制并粘贴到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中打开它的列宽设置正确。