【问题标题】:What is the best way to convert HTML into Excel将 HTML 转换为 Excel 的最佳方法是什么
【发布时间】:2009-06-10 10:35:35
【问题描述】:

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

是否有任何我们可以用来实现此目的的开源 API。你能告诉我有哪些可能的选择吗?

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

【问题讨论】:

    标签: javascript html perl excel


    【解决方案1】:

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

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

    也就是说,屏幕抓取(这就是您正在做的事情)始终是劳动密集型和脆弱的。你真的应该争取一个更好的接口来获取你的数据,从长远来看,它会省去很多麻烦。

    【讨论】:

      【解决方案2】:

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

      尝试其中一些内容类型

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

          如果你在Win32上也可以使用Excel的COM api,网上有不少教程。

          【讨论】:

            【解决方案5】:

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

            CPAN 模块HTML::TableExtract 是一个很棒的模块,它允许您专注于您尝试提取的表格的非演示特定方面。只需指定您感兴趣的列标题,也可以指定表格的标题或类别,您就基本完成了。您可能需要对返回的行进行一些后期处理,但这比处理底层标签汤要容易得多。

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

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

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

            这种组合使我能够使用几百行 Perl 和几天的工作来生成包含数百兆字节的抓取数据(带有徽标和图像链接等)的漂亮文档。

            【讨论】:

              【解决方案6】:

              您正在尝试做的事情是脆弱且难以维护的。您应该尝试创建一个 csv 提要来获取数据。只需要有人来修改 HTML,然后你的爬虫就会把它扔在上面(可能在有人记得你的程序是如何工作的几年后)。

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

              【讨论】:

                【解决方案7】:

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

                【讨论】:

                • 哇。我不知道。但是 Excel 在使用 ";" 的区域中经常不适合 CSV作为列表分隔符,而不是 ","...
                • 我同意,Excel 讨厌的事情列表可能会持续一段时间 :) 我主要使用它来呈现来自服务器端脚本的报告,因此我有能力确保数据格式不会伤害 Excel。
                • +1 用于提及带有“;”的区域分隔器。在荷兰,小数分隔符是逗号。当浮点数有一个点时,excel 会将数字解释为字符串,除非我更改 windows 中的区域设置。在服务器上生成 CSV 并期望它加载到每个人的 excel 中肯定会失败。
                猜你喜欢
                • 1970-01-01
                • 2011-01-21
                • 1970-01-01
                • 2016-05-29
                • 2012-02-29
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多