实现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 相关文章推荐
Javascript 各浏览器的 Javascript 效率对比
Jan 23 Javascript
js文件中调用js的实现方法小结
Oct 23 Javascript
JS调用页面表格导出excel示例代码
Mar 18 Javascript
模拟javascript中的sort排序(简单实例)
Aug 17 Javascript
探究Vue.js 2.0新增的虚拟DOM
Oct 20 Javascript
canvas 弹幕效果(实例分享)
Jan 11 Javascript
vue实现样式之间的切换及vue动态样式的实现方法
Dec 19 Javascript
vue框架搭建之axios使用教程
Jul 11 Javascript
详解react阻止无效重渲染的多种方式
Dec 11 Javascript
vue 父组件给子组件传值子组件给父组件传值的实例代码
Apr 15 Javascript
VUE前后端学习tab写法实例
Aug 06 Javascript
JS的时间格式化和时间戳转换函数示例详解
Jul 27 Javascript
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
ThinkPHP自定义Redis处理SESSION的实现方法
2016/05/16 PHP
PHP生成图像验证码的方法小结(2种方法)
2016/07/18 PHP
PHP 实现浏览记录并按日期分组
2017/05/11 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
JS中Iframe之间传值的方法
2013/03/11 Javascript
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
JS 对象属性相关(检查属性、枚举属性等)
2015/04/05 Javascript
JS用斜率判断鼠标进入DIV四个方向的方法
2016/11/07 Javascript
jquery滚动条插件(可以自定义)
2016/12/11 Javascript
利用JavaScript实现拖拽改变元素大小
2016/12/14 Javascript
Nuxt.js实战详解
2018/01/18 Javascript
vue + webpack如何绕过QQ音乐接口对host的验证详解
2018/07/01 Javascript
Vue常用的几个指令附完整案例
2018/11/06 Javascript
微信小程序module.exports模块化操作实例浅析
2018/12/20 Javascript
ionic4+angular7+cordova上传图片功能的实例代码
2019/06/19 Javascript
vue项目使用.env文件配置全局环境变量的方法
2019/10/24 Javascript
[02:18]《我与DAC》之工作人员:为了热爱DOTA2的玩家们
2018/03/28 DOTA
[01:03:03]VP vs Mineski 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
Linux下Python获取IP地址的代码
2014/11/30 Python
Tensorflow实现AlexNet卷积神经网络及运算时间评测
2018/05/24 Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
2020/02/11 Python
Python中使用socks5设置全局代理的方法示例
2020/04/15 Python
Python字符串split及rsplit方法原理详解
2020/06/29 Python
python 识别登录验证码图片功能的实现代码(完整代码)
2020/07/03 Python
使用gunicorn部署django项目的问题
2020/12/30 Python
CSS3实现时间轴特效
2020/11/02 HTML / CSS
阿玛尼美妆俄罗斯官网:Giorgio Armani Beauty RU
2020/07/19 全球购物
美国乒乓球设备、配件和服装品牌:Killerspin
2020/06/07 全球购物
企业治理工作自我评价
2013/09/26 职场文书
英文版区域经理求职信
2013/10/23 职场文书
情人节寄语大全
2014/04/11 职场文书
态度决定一切演讲稿
2014/05/20 职场文书
安全演讲稿开场白
2014/08/25 职场文书
群众路线教育实践活动自我剖析思想汇报
2014/10/04 职场文书
《这片土地是神圣的》教学反思
2016/02/16 职场文书
Python Django ORM连表正反操作技巧
2021/06/13 Python