我试图直接从数据表导出到Excel .
从ajax调用开始:
displayRecords();
function displayRecords()
{
$.ajax({
url: 'process/getRecords.php',
type: 'POST',
data: '',
dataType: 'html',
success: function(data, textStatus, jqXHR)
{
var jsonObject = $.parseJSON(data);
var table = $('#resultsTable').DataTable({
{
"data": jsonObject,
"columns": [
{"data": "JOB_REFERENCE"},
{"data": "VOYAGE_REFERENCE"},
// few more columns
],
"iDisplayLength": 25,
"scrollY": 500,
"scrollX": true,
"bDestroy": true,
"paging": true,
"stateSave": true
}
},
error: function(jqHHR, textStatus, errorThrown)
{
console.log('fail: '+ errorThrown);
}
});
// button click to export results
var tableresults = $('#resultsTable').dataTable();
$("#btnExport").on('click', function(e)
{
e.preventDefault();
window.open('data:application/vnd.ms-excel,' +
encodeURIComponent(table[0].outerHTML));
});
}
使用上述所有内容,我可以成功地从数据表中导出结果 . 我甚至可以使用过滤器搜索深入查看较小的数据集,并导出结果 .
我正在使用以下小提琴:http://jsfiddle.net/donpayne/jzdjdo3z/
我遇到的问题在于数据表的Show Entries下拉列表 . 通常,下拉列表设置为10.无论是否过滤搜索,如果总记录数大于“显示条目”下拉列表,Excel工作表将仅返回下拉列表中设置的总金额 .
你可以测试我在小提琴中谈论的内容 . 将Show Entries下拉列表设置为10,然后导出到Excel . 如果您注意到,该表中共有58条记录 . Excel工作表只返回10条记录 .
我需要返回所有记录 . 如果我有2000条记录,并且Show Entries下拉列表设置为10,我需要导出的Excel工作表包含所有2000条记录 .
如果我将搜索过滤到大约56条记录,则相同;当我导出到excel时,我应该在该电子表格上总共有56条记录,无论Show Entries下拉列表设置为什么 .
如上所述,我引用了小提琴中的代码并将其更改为适合我的数据表 .
1 回答
我认为最好的办法是删除分页,然后进行导出,然后在完成后重新打开分页 .
我做了一些小改动:
更新小提琴:http://jsfiddle.net/jzdjdo3z/176/
页面长度文档:https://datatables.net/reference/api/page.len()
分页选项文档:https://datatables.net/reference/option/paging
我不确定为什么使用dataTables和DataTables进行初始化会有所不同,但确实如此 . 所以请留意这一点 .