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一些常用的正则表达式字符的一些转换
Jul 29 PHP
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
Jun 24 PHP
新手学习PHP的一些基础知识分享
Jul 27 PHP
mongo Table类文件 获取MongoCursor(游标)的实现方法分析
Jul 01 PHP
PHP防止跨域提交表单
Nov 01 PHP
php实现12306火车票余票查询和价格查询(12306火车票查询)
Jan 14 PHP
教你如何用php实现LOL数据远程获取
Jun 10 PHP
功能强大的PHP图片处理类(水印、透明度、旋转)
Oct 21 PHP
基于PHP后台的Android新闻浏览客户端
May 23 PHP
PHP中的密码加密的解决方案总结
Oct 26 PHP
php将服务端的文件读出来显示在web页面实例
Oct 31 PHP
php基于环形链表解决约瑟夫环问题示例
Nov 07 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/15 PHP
YII中assets的使用示例
2014/07/31 PHP
利用PHP获取网站访客的所在地位置
2017/01/18 PHP
Yii框架的路由配置方法分析
2019/09/09 PHP
Laravel框架源码解析之模型Model原理与用法解析
2020/05/14 PHP
漂亮的widgets,支持换肤和后期开发新皮肤
2007/04/23 Javascript
JavaScript监测ActiveX控件是否已经安装过的代码
2008/09/02 Javascript
jquery中输入验证中一个不错的效果
2010/08/21 Javascript
基于jquery实现点击左右按钮图片横向滚动
2013/04/11 Javascript
利用javascript数组长度循环数组内所有元素
2013/12/27 Javascript
JavaScript弹出新窗口后向父窗口输出内容的方法
2015/04/06 Javascript
nodejs导出excel的方法
2015/06/30 NodeJs
基于javascript实现单选及多选的向右和向左移动实例
2015/07/25 Javascript
针对初学者的jQuery入门指南
2015/08/15 Javascript
基于BootStrap的Metronic框架实现页面链接收藏夹功能按钮移动收藏记录(使用Sortable进行拖动排序)
2016/08/29 Javascript
详解js跨域请求的两种方式,支持post请求
2018/05/05 Javascript
Vue 子组件与数据传递问题及注意事项
2019/07/11 Javascript
Vue 使用计时器实现跑马灯效果的实例代码
2019/07/11 Javascript
Vue项目中使用WebUploader实现文件上传的方法
2019/07/21 Javascript
在 Python 应用中使用 MongoDB的方法
2017/01/05 Python
利用Hyperic调用Python实现进程守护
2018/01/02 Python
python使用mysql的两种使用方式
2018/03/07 Python
django celery redis使用具体实践
2019/04/08 Python
Python数据类型之Number数字操作实例详解
2019/05/08 Python
利用 Flask 动态展示 Pyecharts 图表数据方法小结
2019/09/04 Python
Python散点图与折线图绘制过程解析
2019/11/30 Python
Python实现遗传算法(二进制编码)求函数最优值方式
2020/02/11 Python
英国标志性生活方式品牌:Skinnydip London
2019/12/15 全球购物
教师评优的个人自我评价分享
2013/09/19 职场文书
军训生自我鉴定范文
2013/12/27 职场文书
文案策划求职信
2014/04/14 职场文书
测绘工程专业求职信
2014/07/15 职场文书
社区个人对照检查材料(群众路线)
2014/09/26 职场文书
2016幼儿教师自荐信范文
2016/01/28 职场文书
【海涛解说】暗牧也疯狂,牛蛙成配角
2022/04/01 DOTA
MySQL示例讲解数据库约束以及表的设计
2022/06/16 MySQL