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 相关文章推荐
PHP大批量数据操作时临时调整内存与执行时间的方法
Apr 20 PHP
PHP使用数组实现队列
Feb 05 PHP
深入解析php之sphinx
May 15 PHP
CodeIgniter中实现泛域名解析
Jul 19 PHP
php数组中删除元素之重新索引的方法
Sep 16 PHP
详解js异步文件加载器
Jan 24 PHP
PHP创建/删除/复制文件夹、文件
May 03 PHP
Adnroid 微信内置浏览器清除缓存
Jul 11 PHP
Yii框架实现的验证码、登录及退出功能示例
May 20 PHP
php实现的生成迷宫与迷宫寻址算法完整实例
Nov 06 PHP
PHP实现将多个文件压缩成zip格式并下载到本地的方法示例
May 23 PHP
phpinfo无法显示的原因及解决办法
Feb 15 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
php的控制语句
2006/10/09 PHP
php 移除数组重复元素的一点说明
2008/11/27 PHP
php 正则匹配函数体
2009/08/25 PHP
php使用strtotime和date函数判断日期是否有效代码分享
2013/12/25 PHP
PHP中使用OpenSSL生成证书及加密解密
2017/02/05 PHP
yii2.0框架使用 beforeAction 防非法登陆的方法分析
2019/09/11 PHP
javascript String 对象
2008/04/25 Javascript
js 链式延迟执行DOME
2012/01/04 Javascript
关于js遍历表格的实例
2013/07/10 Javascript
js匿名函数的调用示例(形式多种多样)
2014/08/20 Javascript
jQuery中is()方法用法实例
2015/01/06 Javascript
js实现checkbox全选、不选与反选的方法
2015/02/09 Javascript
Javascript函数的参数
2015/07/16 Javascript
jquery实现红色竖向多级向右展开的导航菜单效果
2015/08/31 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
2015/12/01 Javascript
jQuery取得iframe中元素的常用方法详解
2016/01/14 Javascript
Javascript中常用的检测方法小结
2016/10/08 Javascript
利用Vue.js实现checkbox的全选反选效果
2017/01/18 Javascript
js实现九宫格拼图小游戏
2017/02/13 Javascript
JavaScript获取tr td 的三种方式全面总结(推荐)
2017/08/15 Javascript
在 Angular中 使用 Lodash 的方法
2018/02/11 Javascript
jQuery实现获取form表单内容及绑定数据到form表单操作分析
2018/07/03 jQuery
js实现上传图片并显示图片名称
2019/12/18 Javascript
[44:15]国士无双DOTA2 6.82版本详解(上)
2014/09/28 DOTA
Python代码的打包与发布详解
2014/07/30 Python
对python的文件内注释 help注释方法
2018/05/23 Python
python 定义给定初值或长度的list方法
2018/06/23 Python
解决Pycharm运行时找不到文件的问题
2018/10/29 Python
Clearly新西兰:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
汽车专业毕业生自荐信
2013/11/03 职场文书
生日寿宴答谢词
2014/01/19 职场文书
小学生暑假感言
2014/02/06 职场文书
职业生涯规划书前言
2014/04/15 职场文书
购房委托书
2014/10/15 职场文书
一般基层干部群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
PO模式在selenium自动化测试框架的优势
2022/03/20 Python