jquery+php实现导出datatables插件数据到excel的方法


Posted in PHP onJuly 06, 2015

本文实例讲述了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函数

function table2csv(oTable, exportmode, tableElm) { 
    var csv = ''; 
    var headers = []; 
    var rows = []; 
    // Get header names 
    $(tableElm+' thead').find('th').each(function() { 
      var $th = $(this); 
      var text = $th.text(); 
      var header = '"' + text + '"'; 
      // headers.push(header); // original code 
      if(text != "") headers.push(header); // actually datatables seems to copy my original headers so there ist an amount of TH cells which are empty 
    }); 
    csv += headers.join(',') + "\n"; 
    // get table data 
    if (exportmode == "full") { // total data 
      var total = oTable.fnSettings().fnRecordsTotal() 
      for(i = 0; i < total; i++) { 
        var row = oTable.fnGetData(i); 
        row = strip_tags(row); 
        rows.push(row); 
      } 
    } else { // visible rows only 
      $(tableElm+' tbody tr:visible').each(function(index) { 
        var row = oTable.fnGetData(this); 
        row = strip_tags(row); 
        rows.push(row); 
      }) 
    } 
    csv += rows.join("\n"); 
    // if a csv div is already open, delete it 
    if($('.csv-data').length) $('.csv-data').remove(); 
    // open a div with a download link 
    $('body').append('<div class="csv-data"><form enctype="multipart/form-data" method="post" action="/csv.php"><textarea class="form" name="csv">'+csv+'</textarea><input type="submit" class="submit" value="Download as file" /></form></div>'); 
} 
function strip_tags(html) { 
  var tmp = document.createElement("div"); 
  tmp.innerHTML = html; 
  return tmp.textContent||tmp.innerText; 
}

函数支持导出所有数据和当前页数据

// export only what is visible right now (filters & paginationapplied)
$('#export_visible').click(function(event) {  
   var oTable; 
   oTable= $('#spdata').dataTable(); 
   event.preventDefault(); 
   table2csv(oTable, 'visible', '#spdata'); })
   // export all table data 
$('#export_all').click(function(event) {  
  var oTable; 
  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 相关文章推荐
给apache2.2加上mod_encoding模块後 php5.2.0 处理url出现bug
Apr 12 PHP
php 注释规范
Mar 29 PHP
zend framework配置操作数据库实例分析
Dec 06 PHP
php弹出对话框实现重定向代码
Jan 23 PHP
ThinkPHP模板中数组循环实例
Oct 30 PHP
PHP中array_keys和array_unique函数源码的分析
Feb 26 PHP
Yii框架中jquery表单验证插件用法示例
Oct 18 PHP
php实现水印文字和缩略图的方法示例
Dec 29 PHP
php中遍历二维数组并以表格的形式输出的方法
Jan 03 PHP
php实现遍历文件夹的方法汇总
Mar 02 PHP
yii gridview实现时间段筛选功能
Aug 15 PHP
YII2 全局异常处理深入讲解
Mar 24 PHP
php导出中文内容excel文件类实例
Jul 06 #PHP
PHP伪造来源HTTP_REFERER的方法实例详解
Jul 06 #PHP
PHP 错误处理机制
Jul 06 #PHP
帝国cms常用标签汇总
Jul 06 #PHP
帝国CMS留言板回复后发送EMAIL通知客户
Jul 06 #PHP
帝国cms目录结构分享
Jul 06 #PHP
33道php常见面试题及答案
Jul 06 #PHP
You might like
简单示例AJAX结合PHP代码实现登录效果代码
2008/07/25 PHP
PHP include任意文件或URL介绍
2014/04/29 PHP
php正则表达式验证(邮件地址、Url地址、电话号码、邮政编码)
2016/03/14 PHP
脚本安需导入(装载)的三种模式的对比
2007/06/24 Javascript
javascript vvorld 在线加密破解方法
2008/11/13 Javascript
jQuery ui 1.7更新小结
2009/08/15 Javascript
jquery获得同源iframe内body下标签的值的方法
2014/09/25 Javascript
javascript判断移动端访问设备并解析对应CSS的方法
2015/02/05 Javascript
jQuery实现延迟跳转的方法
2015/06/05 Javascript
Extjs4.0 ComboBox如何实现三级联动
2016/05/11 Javascript
javascript实现获取图片大小及图片等比缩放的方法
2016/11/24 Javascript
javascript动画之磁性吸附效果篇
2016/12/09 Javascript
详解Vue爬坑之vuex初识
2017/06/14 Javascript
vuejs 动态添加input框的实例讲解
2018/08/24 Javascript
用 js 写一个 js 解释器过程详解
2019/08/02 Javascript
JS实现的碰撞检测与周期移动完整示例
2019/09/02 Javascript
JS禁用右键、禁用Ctrl+u、禁用Ctrl+s、禁用F12的实现代码
2020/12/01 Javascript
vue 中使用print.js导出pdf操作
2020/11/13 Javascript
[55:42]VG vs VGJ.T 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
python字典get()方法用法分析
2015/04/17 Python
Python Django使用forms来实现评论功能
2016/08/17 Python
教你学会使用Python正则表达式
2017/09/07 Python
python线程池threadpool实现篇
2018/04/27 Python
python opencv实现证件照换底功能
2019/08/19 Python
Python生成个性签名图片获取GUI过程解析
2019/12/16 Python
图解CSS3制作圆环形进度条的实例教程
2016/05/26 HTML / CSS
css3实现平移效果(transfrom:translate)的示例
2020/11/13 HTML / CSS
使用分层画布来优化HTML5渲染的教程
2015/05/08 HTML / CSS
JSF面试题:Jsf中导航的标签是什么
2013/04/20 面试题
会计专业自我评价
2014/02/12 职场文书
《理想》教学反思
2014/02/17 职场文书
2016年第二十届“母亲节暨幸福工程救助贫困母亲活动日”活动总结
2016/04/06 职场文书
导游词幽默开场白
2019/06/26 职场文书
原生Js 实现的简单无缝滚动轮播图的示例代码
2021/05/10 Javascript
变长双向rnn的正确使用姿势教学
2021/05/31 Python
分析Python感知线程状态的解决方案之Event与信号量
2021/06/16 Python