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自动生成月历代码
Oct 09 PHP
PHP 字符串 小常识
Jun 05 PHP
php Xdebug的安装与使用详解
Jun 20 PHP
PHP截断标题且兼容utf8和gb2312编码
Sep 22 PHP
php下载文件源代码(强制任意文件格式下载)
May 09 PHP
php CI框架插入一条或多条sql记录示例
Jul 29 PHP
PHP+ajax分页实例简析
Dec 07 PHP
WordPress中给媒体文件添加分类和标签的PHP功能实现
Dec 31 PHP
PHP常见数组函数用法小结
Mar 21 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
Sep 16 PHP
PHP中的self关键字详解
Jun 23 PHP
PHP实现考试倒计时功能代码
Apr 16 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
上海地方志办公室-上海电子仪表工业志
2021/03/04 无线电
PHP递归算法的详细示例分析
2013/02/19 PHP
在PHP中使用X-SendFile头让文件下载更快
2014/06/01 PHP
ThinkPHP调用百度翻译类实现在线翻译
2014/06/26 PHP
PHP数组相加操作及与array_merge的区别浅析
2016/11/26 PHP
javascript 正则替换 replace(regExp, function)用法
2010/05/22 Javascript
js解析与序列化json数据(三)json的解析探讨
2013/02/01 Javascript
鼠标滚轮改变图片大小的示例代码
2013/11/20 Javascript
jquery遍历之parent()和parents()的区别及parentsUntil()方法详解
2013/12/02 Javascript
ExtJS4如何自动生成控制grid的列显示、隐藏的checkbox
2014/05/02 Javascript
JS实现跟随鼠标立体翻转图片的方法
2015/05/04 Javascript
解析JavaScript数组方法reduce
2016/12/12 Javascript
通过js控制时间,一秒一秒自己动的实例
2017/10/25 Javascript
详解Axios统一错误处理与后置
2018/09/26 Javascript
Vue点击切换Class变化,实现Active当前样式操作
2020/07/17 Javascript
Python升级提示Tkinter模块找不到的解决方法
2014/08/22 Python
Python中的pprint折腾记
2015/01/21 Python
对python插入数据库和生成插入sql的示例讲解
2018/11/14 Python
利用Pycharm断点调试Python程序的方法
2018/11/29 Python
Python的matplotlib绘图如何修改背景颜色的实现
2019/07/16 Python
Python 中list ,set,dict的大规模查找效率对比详解
2019/10/11 Python
Python线程障碍对象Barrier原理详解
2019/12/02 Python
如何将PySpark导入Python的放实现(2种)
2020/04/26 Python
图解Python中深浅copy(通俗易懂)
2020/09/03 Python
详解Python中Pyyaml模块的使用
2020/10/08 Python
深入理解Python变量的数据类型和存储
2021/02/01 Python
8款使用 CSS3 实现超炫的 Loading(加载)的动画效果
2015/03/17 HTML / CSS
网站域名和主机:Domain.com
2019/04/01 全球购物
西班牙宠物用品和食品网上商店:Tiendanimal
2019/06/06 全球购物
LVMH旗下最大的奢侈品网站平台:24S
2020/05/24 全球购物
保安的辞职报告怎么写
2014/01/20 职场文书
文明工地标语
2014/06/16 职场文书
个人查摆问题自查报告
2014/10/16 职场文书
师范生见习报告
2014/10/31 职场文书
详解CSS3.0(Cascading Style Sheet) 层叠级联样式表
2021/07/16 HTML / CSS
Python中22个万用公式的小结
2021/07/21 Python