JavaScript或Flash导出CSV/Excel

7
有没有办法使用JavaScript或Flash将JSON数据导出到CSV/Excel,而不需要与服务器端进行任何交互?我目前正在使用ZeroClipboard将值复制到剪贴板,但我希望能够直接从浏览器(如FF,Chrome,IE等)打开生成的值并导入Excel。谢谢。

1
请创建一个内存中的文件,供用户下载,而不是通过服务器。 - Liviu T.
2个回答

9
迄今为止,从表格导出到Excel最干净、最简单的方法就是使用Jquery DataTables Table Tools插件。您可以得到一个网格,它可以对您的数据进行排序、过滤、排序和分页,并且只需要添加几行额外的代码和两个小文件,您就可以导出到ExcelPDFCSV,复制到剪贴板,以及打印输出。这是所需的所有代码:
$(document).ready( function () {
    $('#example').dataTable( {
        "sDom": 'T<"clear">lfrtip',
        "oTableTools": {
        "sSwfPath": "/swf/copy_cvs_xls_pdf.swf"
        }
    } );
} );

因此,易于部署,没有浏览器限制,无需服务器端语言,最重要的是非常易于理解。这是双赢的局面。不过,它有一个限制,就是对列的严格格式化。


有没有办法在导出时添加“打开”选项?很奇怪,我只能保存Excel文档。 - ic3
有没有可能在不添加任何DataTables功能的情况下获得TableTools导出功能?我的意思是,我已经有一个带有排序和过滤以及其他很多东西的HTML表格(使用其他方法,而不是DataTables),现在我只需要导出功能... - Nelson Reis
我想使用TableTools,但是我希望使用自己的按钮而不是使用swf按钮。这可行吗? - Firnas

2
似乎没有一种在所有浏览器和文件大小上都可以使用客户端解决的方法。所有解决方案似乎都使用以下其中之一:
  • Flash插件(例如:Downloadify):存在错误且不支持移动设备
  • Data URL:仅有有限的IE支持和大小限制
  • HTML5:下载方法在各个浏览器上都不标准化。
根据您的用例,您可能可以使用上述其中一种。以下是一些其他SO帖子,其中包含更多详细信息。 请注意,Ramandeep Singh的答案中这部分是不正确的:

因此,快速部署,没有浏览器限制,不需要服务器端语言,并且最重要的是非常易于理解。

如果查看DataTables的代码,则会使用flash插件。它将无法在移动浏览器(iOS,最近的未经rooting的Android设备,未经MSFT批准流程或Windows 8 RT的黑客)上工作。这是他们网站上的一篇文章:http://www.datatables.net/forums/discussion/7563/export-to-csvpdf-without-tabletools/p1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接