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 相关文章推荐
与数据库连接
Oct 09 PHP
php cout&amp;lt;&amp;lt;的一点看法
Jan 24 PHP
hessian 在PHP中的使用介绍
Dec 13 PHP
php 注册时输入信息验证器的实现详解
Jul 05 PHP
分享下页面关键字抓取components.arrow.com站点代码
Jan 30 PHP
PHP实现图片旋转效果实例代码
Oct 01 PHP
学习php开源项目的源码指南
Dec 21 PHP
php递归创建目录的方法
Feb 02 PHP
PHP使用redis实现统计缓存mysql压力的方法
Nov 14 PHP
微信第三方登录(原生)demo【必看篇】
May 26 PHP
PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
Mar 15 PHP
解决PHPstudy Apache无法启动的问题【亲测有效】
Oct 30 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
Amazon Prime Video平台《无限住人 -IMMORTAL-》2020年开始TV放送!
2020/03/06 日漫
php中session退出登陆问题
2014/02/27 PHP
php脚本运行时的超时机制详解
2016/02/17 PHP
PHP-FPM运行状态的实时查看及监控详解
2016/11/18 PHP
javascript里的条件判断
2007/02/27 Javascript
JavaScript 组件之旅(一)分析和设计
2009/10/28 Javascript
Javascript数据结构与算法之列表详解
2015/03/12 Javascript
javascript中offset、client、scroll的属性总结
2015/08/13 Javascript
ClearTimeout消除闪动实例代码
2016/02/29 Javascript
Javascript实现图片懒加载插件的方法
2016/10/20 Javascript
js canvas仿支付宝芝麻信用分仪表盘
2016/11/16 Javascript
JS中用try catch对代码运行的性能影响分析
2016/12/26 Javascript
easyUI combobox实现联动效果
2017/01/17 Javascript
BootStrap 表单控件之单选按钮水平排列
2017/05/23 Javascript
es6+angular1.X+webpack 实现按路由功能打包项目的示例
2017/08/16 Javascript
Angular2 组件交互实例详解
2017/08/24 Javascript
node学习笔记之读写文件与开启第一个web服务器操作示例
2019/05/29 Javascript
JS中this的4种绑定规则详解
2020/02/04 Javascript
Python 列表理解及使用方法
2017/10/27 Python
PyCharm 设置SciView工具窗口的方法
2019/01/15 Python
PyCharm的设置方法和第一个Python程序的建立
2019/01/16 Python
Python3.5面向对象与继承图文实例详解
2019/04/24 Python
Python 使用 Pillow 模块给图片添加文字水印的方法
2019/08/30 Python
python中matplotlib条件背景颜色的实现
2019/09/02 Python
python元组的概念知识点
2019/11/19 Python
用python爬取历史天气数据的方法示例
2019/12/30 Python
python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)
2020/02/09 Python
python 3.8.3 安装配置图文教程
2020/05/21 Python
python suds访问webservice服务实现
2020/06/26 Python
Original Penguin英国官方网站:美国著名休闲时装品牌
2016/10/30 全球购物
美国高级工作服品牌:Carhartt
2018/01/25 全球购物
医院党员公开承诺书
2014/08/30 职场文书
2016师德师风学习心得体会
2016/01/12 职场文书
六年级作文之预言作文
2019/10/25 职场文书
Python道路车道线检测的实现
2021/06/27 Python
Mysql存储过程、触发器、事件调度器使用入门指南
2022/01/22 MySQL