我有一个HTML页面,其中包含flash图表(FusionCharts)和HTML表格。我需要将整个事物转换为Excel。 HTML表应显示在Excel工作表的单元格中。 Flash图表可以显示为图像。
我们可以使用任何开源API来实现这一目标。你能告诉我什么是可能的选择吗?
这可以通过单独使用javascript来完成。
答案 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中打开页面