实现easyui的datagrid导出为excel的示例代码


Posted in Javascript onNovember 10, 2016

之前有介绍过如何实现easyui里datagrid内容的打印,今天给大家介绍下如何实现datagrid内容导出为excel文件。以下为代码实现:

export.js

function ChangeToTable(printDatagrid) {
  var tableString = '<table cellspacing="0" class="pb">';
  var frozenColumns = printDatagrid.datagrid("options").frozenColumns; // 得到frozenColumns对象
  var columns = printDatagrid.datagrid("options").columns;  // 得到columns对象
  var nameList = new Array();

  // 载入title
  if (typeof columns != 'undefined' && columns != '') {
    $(columns).each(function (index) {
      tableString += '\n<tr>';
      if (typeof frozenColumns != 'undefined' && typeof frozenColumns[index] != 'undefined') {
        for (var i = 0; i < frozenColumns[index].length; ++i) {
          if (!frozenColumns[index][i].hidden) {
            tableString += '\n<th width="' + frozenColumns[index][i].width + '"';
            if (typeof frozenColumns[index][i].rowspan != 'undefined' && frozenColumns[index][i].rowspan > 1) {
              tableString += ' rowspan="' + frozenColumns[index][i].rowspan + '"';
            }
            if (typeof frozenColumns[index][i].colspan != 'undefined' && frozenColumns[index][i].colspan > 1) {
              tableString += ' colspan="' + frozenColumns[index][i].colspan + '"';
            }
            if (typeof frozenColumns[index][i].field != 'undefined' && frozenColumns[index][i].field != '') {
              nameList.push(frozenColumns[index][i]);
            }
            tableString += '>' + frozenColumns[0][i].title + '</th>';
          }
        }
      }
      for (var i = 0; i < columns[index].length; ++i) {
        if (!columns[index][i].hidden) {
          tableString += '\n<th width="' + columns[index][i].width + '"';
          if (typeof columns[index][i].rowspan != 'undefined' && columns[index][i].rowspan > 1) {
            tableString += ' rowspan="' + columns[index][i].rowspan + '"';
          }
          if (typeof columns[index][i].colspan != 'undefined' && columns[index][i].colspan > 1) {
            tableString += ' colspan="' + columns[index][i].colspan + '"';
          }
          if (typeof columns[index][i].field != 'undefined' && columns[index][i].field != '') {
            nameList.push(columns[index][i]);
          }
          tableString += '>' + columns[index][i].title + '</th>';
        }
      }
      tableString += '\n</tr>';
    });
  }
  // 载入内容
  var rows = printDatagrid.datagrid("getRows"); // 这段代码是获取当前页的所有行
  for (var i = 0; i < rows.length; ++i) {
    tableString += '\n<tr>';
    for (var j = 0; j < nameList.length; ++j) {
      var e = nameList[j].field.lastIndexOf('_0');

      tableString += '\n<td';
      if (nameList[j].align != 'undefined' && nameList[j].align != '') {
        tableString += ' style="text-align:' + nameList[j].align + ';"';
      }
      tableString += '>';
      if (e + 2 == nameList[j].field.length) {
        tableString += rows[i][nameList[j].field.substring(0, e)];
      }
      else
        tableString += rows[i][nameList[j].field];
      tableString += '</td>';
    }
    tableString += '\n</tr>';
  }
  tableString += '\n</table>';
  return tableString;
}

function Export(strXlsName, exportGrid) {
  var f = $('<form action="/export.aspx" method="post" id="fm1"></form>');
  var i = $('<input type="hidden" id="txtContent" name="txtContent" />');
  var l = $('<input type="hidden" id="txtName" name="txtName" />');
  i.val(ChangeToTable(exportGrid));
  i.appendTo(f);
  l.val(strXlsName);
  l.appendTo(f);
  f.appendTo(document.body).submit();
  document.body.removeChild(f);
}

export.aspx

protected void Page_Load(object sender, EventArgs e)
    {
      Response.Clear();
      Response.Buffer = true;
      Response.Charset = "utf-8";
      Response.ContentEncoding = System.Text.Encoding.UTF8;
      Response.AppendHeader("content-disposition", "attachment;filename=\"" + HttpUtility.HtmlEncode(Request["txtName"]??DateTime.Now.ToString("yyyyMMdd")) + ".xls\"");
      Response.ContentType = "Application/ms-excel";
      Response.Write("<html>\n<head>\n");
      Response.Write("<style type=\"text/css\">\n.pb{font-size:13px;border-collapse:collapse;} "+
              "\n.pb th{font-weight:bold;text-align:center;border:0.5pt solid windowtext;padding:2px;} " +
              "\n.pb td{border:0.5pt solid windowtext;padding:2px;}\n</style>\n</head>\n");
      Response.Write("<body>\n" + Request["txtContent"] + "\n</body>\n</html>");
      Response.Flush();
      Response.End(); 
    }

其中export.aspx为了防止前台页面内容干扰,前台页面只留:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="export.aspx.cs" Inherits="newland.WebUI.export" ValidateRequest="false" %>

这句话,其他的全部删除。

调用方法:

<a href="javascript:void(0);" onclick="Export('导出excel', $('#grid'));">导出</a>

以上就是小编为大家带来的实现easyui的datagrid导出为excel的示例代码全部内容了,希望大家多多支持三水点靠木~

Javascript 相关文章推荐
jquery的颜色选择插件实例代码
Oct 02 Javascript
JavaScript window.document的属性、方法和事件小结
Oct 24 Javascript
JS获取月份最后天数、最大天数与某日周数的方法
Dec 08 Javascript
js 弹出对话框(遮罩)透明,可拖动的简单实例
Jul 11 Javascript
微信小程序 loading 详解及实例代码
Nov 09 Javascript
微信小程序之仿微信漂流瓶实例
Dec 09 Javascript
Bootstrap源码解读排版(1)
Dec 23 Javascript
React数据传递之组件内部通信的方法
Dec 31 Javascript
Vue 页面切换效果之 BubbleTransition(推荐)
Apr 08 Javascript
javascript的this关键字详解
May 20 Javascript
vue项目中在可编辑div光标位置插入内容的实现代码
Jan 07 Javascript
详解vue-cli项目在IE浏览器打开报错解决方法
Dec 10 Vue.js
easyui导出excel无法弹出下载框的快速解决方法
Nov 10 #Javascript
VueJS全面解析
Nov 10 #Javascript
JavaScript中如何使用cookie实现记住密码功能及cookie相关函数介绍
Nov 10 #Javascript
easyui中combotree循环获取父节点至根节点并输出路径实现方法
Nov 10 #Javascript
基于jQuery和Bootstrap框架实现仿知乎前端动态列表效果
Nov 09 #Javascript
通过bootstrap全面学习less
Nov 09 #Javascript
DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)
Nov 09 #Javascript
You might like
php $_SESSION会员登录实例分享
2021/01/19 PHP
Thinkphp和onethink实现微信支付插件
2016/04/13 PHP
php微信开发之自定义菜单实现
2016/11/18 PHP
CI框架(CodeIgniter)操作redis的方法详解
2018/01/25 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
JavaScript 关键字屏蔽实现函数
2009/08/02 Javascript
JQuery判断子iframe何时加载完成解决方案
2013/08/20 Javascript
我的Node.js学习之路(二)NPM模块管理
2014/07/06 Javascript
JavaScript对象反射用法实例
2015/04/17 Javascript
JQuery鼠标移到小图显示大图效果的方法
2015/06/10 Javascript
浅谈JavaScript 执行环境、作用域及垃圾回收
2016/05/31 Javascript
JS中的进制转换以及作用
2016/06/26 Javascript
深入理解JS正则表达式---分组
2016/07/18 Javascript
jQuery实现点击某个div打开层,点击其他div关闭层实例分析(阻止冒泡)
2016/11/18 Javascript
AngularJS中isolate scope的用法分析
2016/11/22 Javascript
JS实现身份证输入框的输入效果
2017/08/21 Javascript
node.js爬取中关村的在线电瓶车信息
2018/11/13 Javascript
微信小程序实现批量倒计时功能
2020/11/01 Javascript
关于NodeJS中的循环引用详解
2019/07/23 NodeJs
[05:06]TI4西雅图DOTA2前线报道 海涛密探LGD训练
2014/07/09 DOTA
python 动态获取当前运行的类名和函数名的方法
2014/04/15 Python
Python探索之URL Dispatcher实例详解
2017/10/28 Python
Python3实现对列表按元组指定列进行排序的方法分析
2018/12/22 Python
使用PyQtGraph绘制精美的股票行情K线图的示例代码
2019/03/14 Python
Python学习笔记之迭代器和生成器用法实例详解
2019/08/08 Python
戴尔加拿大官网:Dell加拿大
2016/09/17 全球购物
主持人婚宴答谢词
2014/01/28 职场文书
学生社团文化节开幕式主持词
2014/03/28 职场文书
党校培训自我鉴定范文
2014/04/10 职场文书
学校创先争优活动总结
2014/08/28 职场文书
2015年全国爱耳日活动总结
2015/02/27 职场文书
毕业证明模板
2015/06/19 职场文书
教师节获奖感言
2015/07/31 职场文书
中秋晚会致辞
2015/07/31 职场文书
2019年学校消防安全责任书(2篇)
2019/10/09 职场文书
Java面试题冲刺第十七天--基础篇3
2021/08/07 面试题