实现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 页面自动加载函数(兼容多浏览器)
May 18 Javascript
js 函数调用模式小结
Dec 26 Javascript
JavaScrip实现PHP print_r的数功能(三种方法)
Nov 12 Javascript
邮箱下拉自动填充选择示例代码附图
Apr 03 Javascript
利用jQuery实现可以编辑的表格
May 26 Javascript
Jquery网页内滑动缓冲导航的实现代码
Apr 05 Javascript
jQuery Ajax中的事件详细介绍
Apr 16 Javascript
JavaScript代码性能优化总结(推荐)
May 16 Javascript
JS中BOM相关知识点总结(必看篇)
Nov 22 Javascript
Bootstrap CSS组件之按钮组(btn-group)
Dec 17 Javascript
Vuex mutitons和actions初使用详解
Mar 04 Javascript
vue在自定义组件中使用v-model进行数据绑定的方法
Mar 25 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
利用php实现禁用IE和火狐的缓存问题
2012/12/03 PHP
基于PHP文件操作的详细诠释
2013/06/21 PHP
php计算两个日期相差天数的方法
2015/03/14 PHP
PHP获取用户客户端真实IP的解决方案
2016/10/10 PHP
Mozilla中显示textarea中选择的文字
2006/09/07 Javascript
推荐:极酷右键菜单
2006/11/29 Javascript
ie和firefox中img对象区别的困惑
2006/12/27 Javascript
jQuery(非HTML5)可编辑表格实现代码
2012/12/11 Javascript
什么是cookie?js手动创建和存储cookie
2014/05/27 Javascript
XML文件转化成NSData对象的方法
2015/08/12 Javascript
jQuery简单获取键盘事件的方法
2016/01/22 Javascript
JavaScript Math 对象常用方法总结
2016/04/28 Javascript
jQuery实现页面倒计时并刷新效果
2017/03/13 Javascript
React组件之间的通信的实例代码
2017/06/27 Javascript
Vue 项目部署到服务器的问题解决方法
2017/12/05 Javascript
在vue中使用SockJS实现webSocket通信的过程
2018/08/29 Javascript
Windows下Node爬虫神器Puppeteer安装记
2019/01/09 Javascript
实例讲解JS中pop使用方法
2019/01/27 Javascript
[01:06]DOTA2小知识课堂 Ep.02 吹风竟可解梦境缠绕
2019/12/05 DOTA
[01:05:59]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
Python中使用items()方法返回字典元素对的教程
2015/05/21 Python
使用Python实现微信提醒备忘录功能
2018/12/04 Python
详解用Python为直方图绘制拟合曲线的两种方法
2019/08/21 Python
Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法
2019/09/24 Python
python Pillow图像处理方法汇总
2019/10/16 Python
Python脚本导出为exe程序的方法
2020/03/25 Python
python raise的基本使用
2020/09/10 Python
浅析Python中字符串的intern机制
2020/10/03 Python
全球最大的跑步用品商店:Road Runner Sports
2016/09/11 全球购物
美国高级工作服品牌:Carhartt
2018/01/25 全球购物
.NET程序员的数据库面试题
2012/10/10 面试题
校三好学生主要事迹
2014/01/11 职场文书
个人能力自我鉴赏
2014/01/25 职场文书
预备党员政审材料
2014/02/04 职场文书
Windows中Redis安装配置流程并实现远程访问功能
2021/06/07 Redis
mysql 8.0.27 绿色解压版安装教程及配置方法
2022/04/20 MySQL