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 相关文章推荐
PHP4和PHP5性能测试和对比 测试代码与环境
Aug 17 PHP
php 数组排序 array_multisort与uasort的区别
Mar 24 PHP
PHP连接SQLServer2005的实现方法(附ntwdblib.dll下载)
Jul 02 PHP
在PHP模板引擎smarty生成随机数的方法和math函数详解
Apr 24 PHP
php制作动态随机验证码
Feb 12 PHP
PHP会话处理的10个函数
Aug 11 PHP
WordPress中获取所使用的模板的页面ID的简单方法
Dec 31 PHP
PHP扩展框架之Yaf框架的安装与使用
May 18 PHP
用PHP写的一个冒泡排序法的函数简单实例
May 26 PHP
PHP实现的激活用户注册验证邮箱功能示例
Jun 06 PHP
浅析PHP类的反射来实现依赖注入过程
Feb 06 PHP
PHP调用全国天气预报数据接口查询天气示例
Feb 20 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使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
2020/04/05 PHP
win7 64位系统 配置php最新版开发环境(php+Apache+mysql)
2014/08/15 PHP
在Windows系统下使用PHP生成Word文档的教程
2015/07/03 PHP
PHP函数引用返回的实例详解
2016/09/11 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
PHP实现一个按钮点击上传多个图片操作示例
2020/01/23 PHP
学习面向对象之面向对象的基本概念:对象和其他基本要素
2010/11/30 Javascript
jQuery渐变发光导航菜单的实例代码
2013/03/27 Javascript
JS画线(实例代码)
2013/11/20 Javascript
以JSON形式将JS中Array对象数组传至后台的方法
2014/01/06 Javascript
jquery通过visible来判断标签是否显示或隐藏
2014/05/08 Javascript
原生js简单实现放大镜特效
2017/05/16 Javascript
AngularJS 限定$scope的范围实例详解
2017/06/23 Javascript
使用layui 渲染table数据表格的实例代码
2018/08/19 Javascript
微信小程序实现动态显示和隐藏某个控件功能示例
2018/12/14 Javascript
webpack-url-loader 解决项目中图片打包路径问题
2019/02/15 Javascript
[02:11]完美世界DOTA2联赛10月28日赛事精彩集锦:来吧展示实力强劲
2020/10/29 DOTA
python通过文件头判断文件类型
2015/10/30 Python
Python采用Django制作简易的知乎日报API
2016/08/03 Python
Python实现的归并排序算法示例
2017/11/21 Python
Python字符串中添加、插入特定字符的方法
2019/09/10 Python
Python PyInstaller库基本使用方法分析
2019/12/12 Python
Python面向对象程序设计之私有变量,私有方法原理与用法分析
2020/03/23 Python
Python利用for循环打印星号三角形的案例
2020/04/12 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
2020/05/25 Python
Python 实现RSA加解密文本文件
2020/12/30 Python
使用Python制作一个数据预处理小工具(多种操作一键完成)
2021/02/07 Python
How TDD works
2012/09/30 面试题
医学生个人求职信范文
2013/09/24 职场文书
信息与计算科学专业推荐信
2014/02/23 职场文书
岗位职责怎么写
2014/03/14 职场文书
办公室主任四风问题对照检查材料思想汇报
2014/09/28 职场文书
学校食堂标语
2014/10/06 职场文书
投资入股协议书
2016/03/22 职场文书
导游词之包公祠
2019/11/25 职场文书
2019关于垃圾分类处理的调查报告
2019/12/26 职场文书