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&amp;mysql(六)
Oct 09 PHP
PHP初学者最感迷茫的问题小结
Mar 27 PHP
PHP提示Notice: Undefined variable的解决办法
Nov 24 PHP
修改php.ini不生效问题解决方法(上传大于8M的文件)
Jun 14 PHP
php输入流php://input使用示例(php发送图片流到服务器)
Dec 25 PHP
php实现cc攻击防御和防止快速刷新页面示例
Feb 13 PHP
关于扩展 Laravel 默认 Session 中间件导致的 Session 写入失效问题分析
Jan 08 PHP
PHP中模拟链表和链表的基本操作示例
Feb 27 PHP
利用php_imagick实现复古效果的方法
Oct 18 PHP
php封装的表单验证类完整实例
Oct 19 PHP
PHP经典实用正则表达式小结
May 04 PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
May 13 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
《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
Linux下 php5 MySQL5 Apache2 phpMyAdmin ZendOptimizer安装与配置[图文]
2008/11/18 PHP
PHP解密Unicode及Escape加密字符串
2015/05/17 PHP
php实现的网络相册图片防盗链完美破解方法
2015/07/01 PHP
学习php设计模式 php实现观察者模式(Observer)
2015/12/09 PHP
深入解析PHP的Yii框架中的event事件机制
2016/03/17 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
PHP注释语法规范与命名规范详解篇
2018/01/21 PHP
animate动画示例(泪奔的小孩)及stop和delay的使用
2013/05/06 Javascript
javascript中兼容主流浏览器的动态生成iframe方法
2014/05/05 Javascript
Javascript中判断对象是否为空
2015/06/10 Javascript
Bootstrap模态框调用功能实现方法
2016/09/19 Javascript
微信小程序注册60s倒计时功能 使用JS实现注册60s倒计时功能
2017/08/16 Javascript
JS实现选项卡效果的代码实例
2019/05/20 Javascript
js瀑布流布局的实现
2020/06/28 Javascript
vue相同路由跳转强制刷新该路由组件操作
2020/08/05 Javascript
Python 元组(Tuple)操作详解
2014/03/11 Python
深入源码解析Python中的对象与类型
2015/12/11 Python
常用python编程模板汇总
2016/02/12 Python
pandas 小数位数 精度的处理方法
2018/06/09 Python
Python简单过滤字母和数字的方法小结
2019/01/09 Python
Python3将数据保存为txt文件的方法
2019/09/12 Python
Python切图九宫格的实现方法
2019/10/10 Python
Html5 audio标签样式的修改
2016/01/28 HTML / CSS
请解释流与文件有什么不同
2016/07/29 面试题
山海经纬软件测试笔试题和面试题
2013/04/02 面试题
影视制作岗位职责
2013/12/04 职场文书
求职自荐信
2013/12/14 职场文书
婚礼新郎父母答谢词
2014/01/16 职场文书
企业后勤岗位职责
2014/02/28 职场文书
幼儿园秋游感想
2014/03/12 职场文书
我的祖国演讲稿
2014/05/04 职场文书
大学生个人简历自我评价
2015/03/11 职场文书
保姆聘用合同
2015/09/21 职场文书
MySQL连表查询分组去重的实现示例
2021/07/01 MySQL
Redis基本数据类型Set常用操作命令
2022/06/01 Redis