将引导程序数据表的所有行导出到Excel

我在将Bootstrap Data Table行导出到Excel时遇到了一个问题。

将数据导出到Excel我使用一个名为jquery.table2excel.js的外部插件。

导出数据表的代码如下:

 <script type="text/javascript" src="js/jquery.table2excel.js"> </script> <script> $(function() { var startDate = $(".startDate").val(); var endDate = $(".endDate").val(); $("#exportExcel").click(function(){ $("#table_id").table2excel({ exclude: ".noExl", //name: "Excel Document Name", filename: "Data from " + startDate + " to " + endDate }); }); $("#table_id").dataTable(); }); </script> 

对于Datatable我正在使用下面的库:

 <script type="text/javascript" src="js/jquery.dataTables.min.js"> </script> <script type="text/javascript" src="js/dataTables.bootstrap.js"> </script> 

表格如下:

 <table id="table_id" class="table table-striped table-condensed table- bordered"> <thead>`Table Headers here`</thead> <tbody>`Rows from Database here`</tbody> </table> 

问题描述如下:

  1. 当我试图使用导出function,然后只有可见行被导出到Excel而不是分页行。

例如,假设每页有10行,那么只有前10行会被导出,而当我将每页行更改为25时,所有的25行都会被导出。

我希望所有的行都可以和我使用的插件一起导出。 有什么想法吗?

您可以使用$()方法访问所有行,甚至不存在于DOM中,并使用这些行构造一个新表。 然后你可以在新构build的表上执行table2excel()来获取包含所有行的Excel文件。

例如:

 $(function() { var startDate = $(".startDate").val(); var endDate = $(".endDate").val(); $("#exportExcel").click(function(){ $('<table>') .append( $("#table_id").DataTable().$('tr').clone() ) .table2excel({ exclude: ".excludeThisClass", name: "Worksheet Name", filename: "SomeFile" //do not include extension }); }); $("#table_id").dataTable(); }); 

DEMO

看到这个页面的代码和演示。

笔记

打开由table2excel.js生成的文件时,Excel 2013显示以下错误。

Excel无法打开文件[filename]因为文件格式或文件扩展名无效。 validation该文件是否已损坏,文件扩展名是否与该文件的格式匹配。

由于这个错误,我宁愿使用DataTables TableTools插件,即使它只能生成CSV文件,也使用Flash。