如何从网页导出表格以达到最佳效果

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (19)

如何从网页导出表格到EXCEL。我希望导出包含所有格式和颜色。

提问于
用户回答回答于

很久以前,我发现如果我们用Excel内容类型发送一个HTML文件,它会打开一个带有表的HTML文件。审议上述文件:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>Java Friends</title>
</head>
<body>
  <table style="font-weight: bold">
    <tr style="background-color:red"><td>a</td><td>b</td></tr>
    <tr><td>1</td><td>2</td></tr>
  </table>    
</body>
</html>

我在上面运行了以下书签:

javascript:window.open('data:application/vnd.ms-excel,'+document.documentElement.innerHTML);

事实上,我把它作为Excel文件下载。不过,我没有得到预期的结果-该文件在OpenOffice.org Writer中打开。这就是我的问题:我在这台机器上没有Excel,所以我无法更好地尝试它。而且,这个技巧在六年前已经在旧浏览器和一个过时的MSOffice版本中起了作用,所以我真的不能说它在今天是否会起作用。

总之,在上面的文档中,我添加了一个按钮,它将下载整个文档作为Excel文件,理论上:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>Java Friends</title>
</head>
<body>
  <table style="font-weight: bold">
    <tr style="background-color:red"><td>a</td><td>b</td></tr>
    <tr><td>1</td><td>2</td></tr>
    <tr>
      <td colspan="2">
        <button onclick="window.open('data:application/vnd.ms-excel,'+document.documentElement.innerHTML);">
            Get as Excel spreadsheet
        </button>
      </td>
    </tr>
  </table>    
</body>
</html>

将其保存在文件中,然后单击按钮。

用户回答回答于

从表到Excel的最干净、最简单的导出是jQuery DataTables表工具插件。可以得到一个网格,它可以对数据进行排序、筛选、命令和页面处理,只需添加几行代码和两个小文件,就可以导出到Excel、PDF、CSV、剪贴板和打印机。

这是所需的所有代码:

  $(document).ready( function () {
    $('#example').dataTable( {
        "sDom": 'T<"clear">lfrtip',
        "oTableTools": {
            "sSwfPath": "/swf/copy_cvs_xls_pdf.swf"
        }
    } );
} );

因此,快速部署,没有浏览器限制,不需要服务器端语言,最重要的是很容易理解。这是双赢。不过,它有一件事是有限制的,那就是对列进行严格的格式化。

如果格式化和颜色是绝对的释放,我发现唯一100%可靠的跨浏览器方法是使用服务器端语言处理代码中的适当Excel文件。我的选择是PHPExcel这是迄今为止我发现的唯一一个,当只给HTML时,它可以从任何浏览器中以格式的形式积极地处理导出到Excel的现代版本。不过,让我澄清一下,它肯定不像第一个解决方案那么简单,而且也有点占用资源。但是,从好的方面来说,它也可以直接输出到PDF。一旦你配置好它,每次都能工作。

ableTools已经停用,取而代之的是一个名为“TableTools”的新插件。这些工具执行与旧TableTools扩展相同的功能,但安装起来容易得多,它们使用HTML 5下载的现代浏览器,并有能力回到原来的Flash下载的浏览器不支持HTML 5标准。从我在2011发布这个回复以来的许多评论中,可以看到,TableTools的主要弱点已经得到了解决。对于开发人员和用户来说,我仍然不能推荐足够的DataTables来简单地处理大量数据。

扫码关注云+社区