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 相关文章推荐
snoopy PHP版的网络客户端提供本地下载
Apr 15 PHP
php 3行代码的分页算法(求起始页和结束页)
Oct 21 PHP
php中设置index.php文件为只读的方法
Feb 06 PHP
php定界符
Jun 19 PHP
php查询mysql大量数据造成内存不足的解决方法
Mar 04 PHP
PHP调用存储过程返回值不一致问题的解决方法分析
Apr 26 PHP
php生成txt文件实例代码介绍
Apr 28 PHP
PHP将URL转换成短网址的算法分享
Sep 13 PHP
php四种定界符详解
Feb 16 PHP
Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
May 28 PHP
php curl简单采集图片生成base64编码(并附curl函数参数说明)
Feb 15 PHP
零基础php编程好学吗
Oct 11 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 将bmp图片转为jpg等其他任意格式的图片
2009/06/29 PHP
PHP多线程编程之管道通信实例分析
2015/03/07 PHP
php实现读取内存顺序号
2015/03/29 PHP
Zend Framework教程之Zend_Config_Xml用法分析
2016/03/23 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
2016/05/19 PHP
PHP基于自定义函数生成笛卡尔积的方法示例
2017/09/30 PHP
总结PHP内存释放以及垃圾回收
2018/03/29 PHP
PHP如何使用cURL实现Get和Post请求
2020/07/11 PHP
ExtJS GridPanel 根据条件改变字体颜色
2010/03/08 Javascript
动态获取复选框checkbox选中个数的jquery代码
2013/06/25 Javascript
javascript如何动态加载表格与动态添加表格行
2013/11/27 Javascript
jquery easyui 结合jsp简单展现table数据示例
2014/04/18 Javascript
使用script的src实现跨域和类似ajax效果
2014/11/10 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
2015/08/24 Javascript
微信小程序 WXDropDownMenu组件详解及实例代码
2016/10/24 Javascript
JQuery中DOM节点的操作与访问方法实例分析
2019/12/23 jQuery
JavaScript实现移动端拖动元素
2020/11/24 Javascript
Vue2.x-使用防抖以及节流的示例
2021/03/02 Vue.js
Python正则表达式的使用范例详解
2014/08/08 Python
Python基于回溯法解决01背包问题实例
2017/12/06 Python
pymongo中group by的操作方法教程
2019/03/22 Python
python中的反斜杠问题深入讲解
2019/08/12 Python
利用Python绘制有趣的万圣节南瓜怪效果
2019/10/31 Python
使用Python的networkx绘制精美网络图教程
2019/11/21 Python
Keras使用ImageNet上预训练的模型方式
2020/05/23 Python
美国在线精品家居网站:Burke Decor
2017/04/12 全球购物
智能家居、吸尘器、滑板车、电动自行车网上购物:Geekmaxi
2021/01/18 全球购物
简单说下OSPF的操作过程
2014/08/13 面试题
幼儿园毕业家长感言
2014/02/10 职场文书
《燕子专列》教学反思
2014/02/21 职场文书
本科生自荐信
2014/06/18 职场文书
党员干部四风问题整改措施思想汇报
2014/10/12 职场文书
车间质检员岗位职责
2015/04/08 职场文书
事业单位财务人员岗位职责
2015/04/14 职场文书
旅游项目合作意向书
2015/05/08 职场文书
七年级写作指导之游记作文
2019/10/07 职场文书