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数组函数
Aug 18 PHP
PHP MySQL应用中使用XOR运算加密算法分享
Aug 28 PHP
php注销代码(session注销)
May 31 PHP
基于Zend的Config机制的应用分析
May 02 PHP
php 过滤英文标点符号及过滤中文标点符号代码
Jun 12 PHP
PHP魔术方法__GET、__SET使用实例
Nov 25 PHP
php curl请求信息和返回信息设置代码实例
Apr 27 PHP
CodeIgniter中使用Smarty3基本配置
Jun 29 PHP
PHP中余数、取余的妙用
Jun 29 PHP
Smarty保留变量用法分析
May 23 PHP
thinkPHP实现基于ajax的评论回复功能
Jun 22 PHP
php适配器模式简单应用示例
Oct 23 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中文乱码
2009/11/26 PHP
在MongoDB中模拟Auto Increment的php代码
2011/03/06 PHP
php根据日期判断星座的函数分享
2014/02/13 PHP
自定义session存储机制避免会话保持问题
2014/10/08 PHP
php实现把url转换迅雷thunder资源下载地址的方法
2014/11/07 PHP
php计算两个日期相差天数的方法
2015/03/14 PHP
php 访问oracle 存储过程实例详解
2017/01/08 PHP
JQuery 无废话系列教程(二) jquery实战篇上
2009/06/23 Javascript
无阻塞加载脚本分析[全]
2011/01/20 Javascript
基于javascipt-dom编程 table对象的使用
2013/04/22 Javascript
使用jQuery.wechat构建微信WEB应用
2014/10/09 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
2016/06/24 Javascript
bootstrap使用validate实现简单校验功能
2016/12/02 Javascript
详解Vue 方法与事件处理器
2017/06/20 Javascript
Node.js中,在cmd界面,进入退出Node.js运行环境的方法
2018/05/12 Javascript
js中对象与对象创建方法的各种方法
2019/02/27 Javascript
小程序实现搜索框
2020/06/19 Javascript
[01:03:31]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第二局
2016/02/26 DOTA
[54:28]EG vs OG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
python面向对象_详谈类的继承与方法的重载
2017/06/07 Python
python 列表,数组,矩阵两两转换tolist()的实例
2018/04/04 Python
Django 多语言教程的实现(i18n)
2018/07/07 Python
Python测试模块doctest使用解析
2019/08/10 Python
python实现把两个二维array叠加成三维array示例
2019/11/29 Python
美国著名首饰网站:BaubleBar
2016/08/29 全球购物
美国演唱会和体育门票购买网站:Ticketnetwork
2018/10/19 全球购物
市场营销职业生涯规划书范文
2014/01/12 职场文书
乡镇庆八一活动方案
2014/02/02 职场文书
致标枪运动员加油稿
2014/02/15 职场文书
2014年最新学习全国两会精神心得
2014/03/17 职场文书
建筑投标担保书
2014/05/20 职场文书
门卫岗位职责说明书
2014/08/18 职场文书
自习课吵闹检讨书范文
2014/09/26 职场文书
活动经费申请报告
2015/05/15 职场文书
儿子满月酒致辞
2015/07/29 职场文书
2016民族团结先进个人事迹材料
2016/02/26 职场文书