jQuery表格到CSV导出

我正在使用CSV插件的jQuery表。 我修改了popup窗口,告诉浏览器下载一个CSV文件。

它是:

function popup(data) { var generator = window.open('', 'csv', 'height=400,width=600'); generator.document.write('<html><head><title>CSV</title>'); generator.document.write('</head><body >'); generator.document.write('<textArea cols=70 rows=15 wrap="off" >'); generator.document.write(data); generator.document.write('</textArea>'); generator.document.write('</body></html>'); generator.document.close(); return true; } 

我已经将其更改为:

 function popup(data) { window.location='data:text/csv;charset=utf8,' + encodeURIComponent(data); return true; } 

它的工作,大部分。 它仍然需要你find你的电子表格软件,并创build自己的文件名…因为它创build了一个奇怪的文件名(例如:14YuskG_.csv.part)。

有关如何改善这一点的任何build议?

find了一个可行的解决scheme(在http://www.topsemtips.com/2008/11/save-html-table-to-excel-using-jquery/的帮助下):;

我改变了function:

 function popup(data) { $("#main div.inner").append('<form id="exportform" action="export.php" method="post" target="_blank"><input type="hidden" id="exportdata" name="exportdata" /></form>'); $("#exportdata").val(data); $("#exportform").submit().remove(); return true; } 

并创build了文件export.php:

 <?php header("Content-type: application/vnd.ms-excel; name='excel'"); header("Content-Disposition: filename=export.csv"); header("Pragma: no-cache"); header("Expires: 0"); print $_REQUEST['exportdata']; ?> 

更新:更多的IE7友好版本:

 <?php header('Content-Type: application/force-download'); header('Content-disposition: attachment; filename=filename.csv'); print $_POST['exportdata']; ?> 

感谢您的问题和答案,为我工作得很好。 下面是我使用的解决scheme的(几乎相同的)ASP.Net版本:

将table2CSV.jspopup式函数更改为:

 function popup(data) { $("body").append('<form id="exportform" action="CsvExport.ashx" method="post" target="_blank"><input type="hidden" id="exportdata" name="exportdata" /></form>'); $("#exportdata").val(data); $("#exportform").submit().remove(); return true; } 

注意到从export.php更改为.ashx通用处理程序。

通用处理程序代码:

  public void ProcessRequest (HttpContext context) { context.Response.ContentType = "application/force-download"; context.Response.AddHeader("content-disposition", "filename=filename.csv"); context.Response.Write(context.Request.Form["exportdata"]); } 

我不build议这样“下载”CSV数据。 IE7只允许在地址栏中最多包含2000个字符,因此您的文件被截断的几率很高。

不兼容所有浏览器,但不需要服务器端! 使用JSFiddle尝试下面的代码,并告诉我们它是否在浏览器中运行。

 $('<a></a>') .attr('id','downloadFile') .attr('href','data:text/csv;charset=utf8,' + encodeURIComponent(data)) .attr('download','filename.csv') .appendTo('body'); $('#downloadFile').ready(function() { $('#downloadFile').get(0).click(); }); 

我强烈build议使用http://datatables.net/extras/tabletools/ ,这使得很容易玩桌子