在没有分页的情况下导出 Excel 中的数据表数据
Exporting Datatable data in Excel without Pagination
目前我正在使用带分页的数据表。现在我最近添加了 Datatable.buttons 库以使用导出到 Excel 选项。现在这个功能工作正常,但由于分页,它只导出我当前所在页面的前 10 行。现在,如果我删除我的模型 class 中的限制,它将导出我想要的所有条目,但它也摆脱了降低我的网站性能的分页。以下是我目前AJAX获取Datatable数据的调用代码:
$('#datatable.table').DataTable({
searching: true,
paging: true,
processing: true,
serverSide: true,
bFilter: true,
dom: 'Bfrtip',
async: false,
'columnDefs': [ {
'targets':[0,1,31,32,33,34,35,36,37],
'orderable': false,
}],
buttons: [
{
text:"Export to Excel",
extend: 'excelHtml5',
exportOptions: {
columns: ':visible',
modifier:{
page:'all'
}
}
},
],
ajax: {
"url": '<?php echo site_url('listings/dtlists'); ?>',
"type": "POST"
},
columns: [{
data: "title",
className: "column5"
},
...
现在我在修饰符中添加了 page:'all'
,但它仍然只打印第一页。那么有什么方法可以让我只为导出按钮使用不同的模型功能,我可以在其中手动自定义限制,例如 1000 条或 2000 条记录?
基本上我想将按钮功能重定向到不同的控制器,而不是当前要去的 "url": '<?php echo site_url('listings/dtlists'); ?>',
控制器。
此行为的原因是服务器端处理。通过服务器端处理,只有那些需要显示的记录才由客户端加载。如果将分页设置为 10,则仅加载 10 条记录 - 并且可以导出。
如果您摆脱服务器端处理,一切都会正常进行,因为无论您的分页设置如何,所有相关记录都会下载到客户端。服务器端处理仅适用于具有非常大的表且有很多符合下载条件的记录的情况。否则它有很多缺点,例如如果您呈现的值与您的数据库内容等不完全匹配,则搜索不起作用。
我只有在绝对不能避免的情况下才使用服务器端。
目前我正在使用带分页的数据表。现在我最近添加了 Datatable.buttons 库以使用导出到 Excel 选项。现在这个功能工作正常,但由于分页,它只导出我当前所在页面的前 10 行。现在,如果我删除我的模型 class 中的限制,它将导出我想要的所有条目,但它也摆脱了降低我的网站性能的分页。以下是我目前AJAX获取Datatable数据的调用代码:
$('#datatable.table').DataTable({
searching: true,
paging: true,
processing: true,
serverSide: true,
bFilter: true,
dom: 'Bfrtip',
async: false,
'columnDefs': [ {
'targets':[0,1,31,32,33,34,35,36,37],
'orderable': false,
}],
buttons: [
{
text:"Export to Excel",
extend: 'excelHtml5',
exportOptions: {
columns: ':visible',
modifier:{
page:'all'
}
}
},
],
ajax: {
"url": '<?php echo site_url('listings/dtlists'); ?>',
"type": "POST"
},
columns: [{
data: "title",
className: "column5"
},
...
现在我在修饰符中添加了 page:'all'
,但它仍然只打印第一页。那么有什么方法可以让我只为导出按钮使用不同的模型功能,我可以在其中手动自定义限制,例如 1000 条或 2000 条记录?
基本上我想将按钮功能重定向到不同的控制器,而不是当前要去的 "url": '<?php echo site_url('listings/dtlists'); ?>',
控制器。
此行为的原因是服务器端处理。通过服务器端处理,只有那些需要显示的记录才由客户端加载。如果将分页设置为 10,则仅加载 10 条记录 - 并且可以导出。
如果您摆脱服务器端处理,一切都会正常进行,因为无论您的分页设置如何,所有相关记录都会下载到客户端。服务器端处理仅适用于具有非常大的表且有很多符合下载条件的记录的情况。否则它有很多缺点,例如如果您呈现的值与您的数据库内容等不完全匹配,则搜索不起作用。
我只有在绝对不能避免的情况下才使用服务器端。