实现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 相关文章推荐
js 禁用浏览器的后退功能的简单方法
Dec 10 Javascript
js 获取和设置css3 属性值的实现方法
May 06 Javascript
jquery validate demo 基础
Oct 29 Javascript
node.js回调函数之阻塞调用与非阻塞调用
Nov 13 Javascript
完美解决IE9浏览器出现的对象未定义问题
Sep 29 Javascript
AngularJS2中一种button切换效果的实现方法(二)
Mar 27 Javascript
浅谈vue路径优化之resolve
Oct 13 Javascript
Vue2.0学习系列之项目上线的方法步骤(图文)
Sep 25 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
Dec 10 Javascript
Vue2(三)实现子菜单展开收缩,带动画效果实现方法
Apr 28 Javascript
微信小程序实现form表单本地储存数据
Jun 27 Javascript
jQuery实现提交表单时不提交隐藏div中input的方法
Oct 08 jQuery
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 SQLite类
2009/05/07 PHP
php实现水仙花数的4个示例分享
2014/04/08 PHP
PHP手机短信验证码实现流程详解
2018/05/17 PHP
PHP+Redis链表解决高并发下商品超卖问题(实现原理及步骤)
2020/08/03 PHP
MyEclipse取消验证Js的两种方法
2013/11/14 Javascript
原生javascript实现Tab选项卡切换功能
2015/01/12 Javascript
jquery实现拖拽调整Div大小
2015/01/30 Javascript
js实现纯前端的图片预览
2016/04/27 Javascript
jQuery插件简单学习实例教程
2016/07/01 Javascript
jquery attr()设置和获取属性值实例教程
2016/09/25 Javascript
JavaScript 最佳实践:帮你提升代码质量
2016/12/03 Javascript
jQuery实现动态添加、删除按钮及input输入框的方法
2017/04/27 jQuery
p5.js入门教程之平滑过渡(Easing)
2018/03/16 Javascript
解决layui 复选框等内置控件不显示的问题
2018/08/14 Javascript
jQuery实现获取及设置CSS样式操作详解
2018/09/05 jQuery
nodejs读取本地中文json文件出现乱码解决方法
2018/10/10 NodeJs
使用React手写一个对话框或模态框的方法示例
2019/04/25 Javascript
Javascript作用域和作用域链原理解析
2020/03/03 Javascript
python分割和拼接字符串
2013/11/01 Python
Python数据分析之真实IP请求Pandas详解
2016/11/18 Python
python中yaml配置文件模块的使用详解
2018/04/27 Python
Python面向对象程序设计示例小结
2019/01/30 Python
如何在Django项目中引入静态文件
2019/07/26 Python
jupyter notebook 调用环境中的Keras或者pytorch教程
2020/04/14 Python
python正则表达式的懒惰匹配和贪婪匹配说明
2020/07/13 Python
京东全球售:直邮香港,澳门,台湾,美国,澳大利亚等地区
2017/09/24 全球购物
linux面试题参考答案(6)
2014/08/29 面试题
新闻专业个人求职信
2013/12/19 职场文书
政风行风评议整改方案
2014/09/15 职场文书
法人身份证明书
2014/10/08 职场文书
清明节寄语2015
2015/03/23 职场文书
2016毕业实习单位评语大全
2015/12/01 职场文书
经典励志格言:每日一句,让你每天充满能量
2019/08/16 职场文书
CSS实现单选折叠菜单功能
2021/11/01 HTML / CSS
AndroidStudio图片压缩工具ImgCompressPlugin使用实例
2022/08/05 Java/Android
postgresql之greenplum字符串去重拼接方式
2023/05/08 PostgreSQL