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
DedeCms模板安装/制作概述
Mar 11 PHP
PHP通用分页类page.php[仿google分页]
Aug 31 PHP
PHP 反向排序和随机排序代码
Jun 30 PHP
解析PHP对现有搜索引擎的调用
Jun 25 PHP
CodeIgniter生成网站sitemap地图的方法
Nov 13 PHP
php基于Snoopy解析网页html的方法
Jul 09 PHP
PHP测试成功的邮件发送案例
Oct 26 PHP
阿里云PHP SMS短信服务验证码发送方法
Jul 11 PHP
Yii框架参数配置文件params用法实例分析
Sep 11 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
Apr 04 PHP
PHP强制转化的形式整理
May 22 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实现文件上传二法
2006/10/09 PHP
oracle资料库函式库
2006/10/09 PHP
PHP 批量删除数据的方法分析
2009/10/30 PHP
自己写了一个php检测文件编码的函数
2014/04/21 PHP
php写app接口并返回json数据的实例(分享)
2017/05/20 PHP
PHP实现笛卡尔积算法的实例讲解
2019/12/22 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
让您的菜单不离网站
2006/10/03 Javascript
5分钟理解JavaScript中this用法分享
2013/11/09 Javascript
JavaScript中创建对象的模式汇总
2016/04/19 Javascript
JavaScript中获取HTML元素值的三种方法
2016/06/20 Javascript
Bootstrap modal 多弹窗之叠加关闭阴影遮罩问题的解决方法
2017/02/27 Javascript
jQuery控制元素隐藏和显示
2017/03/03 Javascript
浅谈webpack对样式的处理
2018/01/05 Javascript
AngularJS select加载数据选中默认值的方法
2018/02/28 Javascript
Webpack 之 babel-loader文件预处理器详解
2018/03/23 Javascript
vue form 表单提交后刷新页面的方法
2018/09/04 Javascript
layui实现数据表格点击搜索功能
2020/03/26 Javascript
JS如何寻找数组中心索引过程解析
2020/06/01 Javascript
深度解读vue-resize的具体用法
2020/07/08 Javascript
python正则分析nginx的访问日志
2017/01/17 Python
实例分析python3实现并发访问水平切分表
2018/09/29 Python
Python爬虫实现验证码登录代码实例
2019/05/10 Python
python实现从wind导入数据
2019/12/03 Python
python用TensorFlow做图像识别的实现
2020/04/21 Python
python 数据分析实现长宽格式的转换
2020/05/18 Python
Django DRF路由与扩展功能的实现
2020/06/03 Python
HTML5中语义化 b 和 i 标签
2008/10/17 HTML / CSS
英国品牌男装折扣网站:Brown Bag
2018/03/08 全球购物
UNIONBAY官网:美国青少年服装品牌
2019/03/26 全球购物
测绘工程个人的自我评价
2013/11/10 职场文书
小学岗位竞聘方案
2014/01/22 职场文书
质量标语大全
2014/06/12 职场文书
节能环保演讲稿
2014/08/28 职场文书
2014年仓库保管员工作总结
2014/12/03 职场文书
MySQL 数据表操作
2022/05/04 MySQL