jquery+php实现导出datatables插件数据到excel的方法
本文实例讲述了jquery+php实现导出datatables插件数据到excel的方法。分享给大家供大家参考。具体如下:
DataTables是一个jQuery的表格插件。这是一个高度灵活的工具,依据的基础逐步增强,这将增加先进的互动控制,支持任何HTML表格。主要特点:
1.自动分页处理
2.即时表格数据过滤
3.数据排序以及数据类型自动检测
4.自动处理列宽度
5.可通过CSS定制样式
6.支持隐藏列
7.易用
8.可扩展性和灵活性
9.国际化
10.动态创建表格
11.免费
插件地址http://www.datatables.net/
不过可惜的是官方网站表格数据导出方法使用的是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"); //ifacsvdivisalreadyopen,deleteit if($('.csv-data').length)$('.csv-data').remove(); //openadivwithadownloadlink $('body').append('<divclass="csv-data"><formenctype="multipart/form-data"method="post"action="/csv.php"><textareaclass="form"name="csv">'+csv+'</textarea><inputtype="submit"class="submit"value="Downloadasfile"/></form></div>'); } functionstrip_tags(html){ vartmp=document.createElement("div"); 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程序设计有所帮助。