本文实例讲述了jquery+php实现导出datatables插件数据到excel的方法。分享给大家供大家参考。具体如下:
DataTables是一个jQuery的表格插件。这是一个高度灵活的工具,依据的基础逐步增强,这将增加先进的互动控制,支持任何HTML表格。主要特点:
1.自动分页处理
2.即时表格数据过滤
3.数据排序以及数据类型自动检测
4.自动处理列宽度
5.可通过CSS定制样式
6.支持隐藏列
7.易用
8.可扩展性和灵活性
9.国际化
10.动态创建表格
不过可惜的是官方网站表格数据导出方法使用的是tabletools插件,利用flash导出数据,而且不支持中文数据,通过查找官方的API和资料,找到使用jquery和php导出数据方法。
导出数据的javascript函数
functiontable2csv(oTable,exportmode,tableElm){
varcsv='';
varheaders=[];
varrows=[];
//Getheadernames
$(tableElm+'thead').find('th').each(function(){
var$th=$(this);
vartext=$th.text();
varheader='"'+text+'"';
//headers.push(header);//originalcode
if(text!="")headers.push(header);
//actuallydatatablesseemstocopymyoriginalheaderssothereistanamountofTHcellswhichareempty
});
csv+=headers.join(',')+"\n";
//gettabledata
if(exportmode=="full"){//totaldata
vartotal=oTable.fnSettings().fnRecordsTotal()
for(i=0;i<total;i++){
varrow=oTable.fnGetData(i);
row=strip_tags(row);
rows.push(row);
}
}else{//visiblerowsonly
$(tableElm+'tbodytr:visible').each(function(index){
varrow=oTable.fnGetData(this);
row=strip_tags(row);
rows.push(row);
})
}
csv+=rows.join("\n");
//ifacsvpisalreadyopen,deleteit
if($('.csv-data').length)$('.csv-data').remove();
//openapwithadownloadlink
$('body').append('<pclass="csv-data"></p><formenctype="multipart/form-data"method="post"action="/csv.php"><textareaclass="form"name="csv">'+csv+'</textarea><inputtype="submit"class="submit"value="Downloadasfile"></form><p></p>');
}
functionstrip_tags(html){
vartmp=document.createElement("p");
tmp.innerHTML=html;
returntmp.textContent||tmp.innerText;
}
函数支持导出所有数据和当前页数据
//exportonlywhatisvisiblerightnow(filters&paginationapplied)
$('#export_visible').click(function(event){
varoTable;
oTable=$('#spdata').dataTable();
event.preventDefault();
table2csv(oTable,'visible','#spdata');})
//exportalltabledata
$('#export_all').click(function(event){
varoTable;
oTable=$('#spdata').dataTable();
event.preventDefault();
table2csv(oTable,'full','#spdata');})
其中#spdata是table的id
后台php导出excel代码
header("Content-Type:application/vnd.ms-execl");
header("Content-Disposition:attachment;filename=myExcel.csv");
header("Pragma:no-cache");
header("Expires:0");
$buffer=$_POST['csv'];
$buffer=str_replace(",",",\t",$buffer);
$buffer=mb_convert_encoding($buffer,"GB2312","UTF-8");
echo$buffer;
希望本文所述对大家的php程序设计有所帮助。最后想要了解更多关于PHP开发发展前景趋势,请关注扣丁学堂官网、微信等平台,扣丁学堂PHP培训IT职业在线学习教育平台为您提供权威的PHP视频教程系统,通过千锋扣丁学堂金牌讲师在线录制的一套PHP视频教程课程,让你快速掌握PHP从入门到精通开发实战技能。扣丁学堂PHP技术交流群:374332265。