将HTML转换为Excel的最佳方法是什么?

时间:2009-06-10 10:35:36

标签: javascript html perl excel

我有一个HTML页面,其中包含flash图表(FusionCharts)和HTML表格。我需要将整个事物转换为Excel。 HTML表应显示在Excel工作表的单元格中。 Flash图表可以显示为图像。

我们可以使用任何开源API来实现这一目标。你能告诉我什么是可能的选择吗?

这可以通过单独使用javascript来完成。

7 个答案:

答案 0 :(得分:5)

HTML表格相对简单。您可以下载页面,解析HTML(有各种HTML解析库可用),提取表格并将其转换为CSV(Excel可以加载),或者直接创建Excel文件,例如:使用Java POI,如上所述。

Flash部分要难得多。有很多工具可用于将闪光捕捉到图像,您需要使用其中一种。这可能很棘手,因为Flash可能是交互式的,因此您可能需要远程控制Flash部件,以便在捕获之前显示正确的图像。没有更多信息很难分辨。

也就是说,屏幕抓取(这就是你正在做的事情)总是劳动密集且脆弱。你应该真正推动一个更好的界面来获取你的数据,从长远来看,它将节省大量的麻烦。

答案 1 :(得分:4)

只需将页面的内容类型设置为“application / vnd.ms-excel”即可。如果html页面只是一个表格,它将以excel打开并且看起来很完美。您甚至可以添加背景颜色和字体样式。

尝试其中一些内容类型

application/excel
application/vnd.ms-excel
application/x-excel
application/x-msexcel

答案 2 :(得分:3)

Excel可以默认转换HTML表格。强制它执行此操作的最简单方法是使用XLS扩展名保存HTML文件。然后,Excel将打开XLS,就好像它是本机工作簿一样。

答案 3 :(得分:2)

有一个非常好的Java POI API可以让你这样做,但它是Java。 http://poi.apache.org/

如果你使用的是Win32,你也可以使用Excel的COM api,网上有很多教程。

答案 4 :(得分:2)

我无法就Flash部分提供任何建议,但我已经多次对Excel进行了HTML表格。是的,Excel可以打开HTML表格,但大多数HTML表格中都有无关的废话,这些废话可能会使表格一致地解析表格变得脆弱。

CPAN模块HTML::TableExtract是一个很棒的模块,它允许您专注于您尝试提取的表的非表示特定方面。只需指定您感兴趣的列标题,并指定表格的标题或类别,您就可以设置。您可能必须对返回的行进行一些后续处理,但这比处理基础标记汤的所有荣耀要容易得多。

此外,对于输出到Excel格式,请坚持使用Spreadsheet::WriteExcel而不是OLE接口。这样,您就不依赖于安装Excel来使您的程序正常工作,而且事情会更快一些。

如果您不希望Excel在打开文件时自动更改内容,请确保指定单元格的数据类型(另一个原因是我不喜欢发送CSV文件)。使用配置文件格式化信息,以便您可以更改电子表格的外观,而无需更改程序。

您始终可以使用Excel的内置图表工具来替换网站图表。

这种组合使我能够使用几百行Perl和几天的工作生成包含几百兆个数据(带有徽标和图像链接等)的非常好看的文档。

答案 5 :(得分:1)

你要做的是脆弱和难以维护。您应该尝试创建csv提要来获取数据。所有这一切都需要有人来修改HTML并且你的刮刀会抛弃它(可能是在有人记得你的程序如何工作的几年之后)。

尝试从原始源(即数据库或其他)获取CSV和图像数据,然后从中构建Excel文件。

答案 6 :(得分:1)

我将添加SpliFF的答案,当您将数据作为CSV文件时,您可以将页面的mime类型设置为application / vnd.ms-excel,这将在Excel中打开页面