实现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继承的实现代码
Aug 05 Javascript
解决jquery的datepicker的本地化以及Today问题
May 23 Javascript
JS模板实现方法
Apr 03 Javascript
javascript模拟实现C# String.format函数功能代码
Nov 25 Javascript
js Object2String方便查看js对象内容
Nov 24 Javascript
js实现增加数字显示的环形进度条效果
Feb 05 Javascript
Angular2 Service实现简单音乐播放器服务
Feb 24 Javascript
解决微信二次分享不显示摘要和图片的问题
Aug 18 Javascript
ES6学习教程之模板字符串详解
Oct 09 Javascript
Vue 列表上下过渡效果的实例代码
Jun 25 Javascript
JavaScript实现模态对话框实例
Jan 13 Javascript
Vue如何基于es6导入外部js文件
May 15 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中switch与ifelse的效率区别及适用情况分析
2015/02/12 PHP
Zend Framework上传文件重命名的实现方法
2016/11/25 PHP
浅谈php://filter的妙用
2019/03/05 PHP
调试php程序的简单步骤
2019/10/04 PHP
php自动加载代码实例详解
2021/02/26 PHP
不得不看之JavaScript构造函数及new运算符
2017/08/21 Javascript
Vue 滚动行为的具体使用方法
2017/09/13 Javascript
vue通过点击事件读取音频文件的方法
2018/05/30 Javascript
vue init webpack 建vue项目报错的解决方法
2018/09/29 Javascript
JS数组求和的常用方法总结【5种方法】
2019/01/14 Javascript
深入理解es6块级作用域的使用
2019/03/28 Javascript
js canvas实现5张图片合成一张图片
2019/07/15 Javascript
Python模块学习 datetime介绍
2012/08/27 Python
浅谈django model的get和filter方法的区别(必看篇)
2017/05/23 Python
python3的输入方式及多组输入方法
2018/10/17 Python
Python判断一个文件夹内哪些文件是图片的实例
2018/12/07 Python
Python 从一个文件中调用另一个文件的类方法
2019/01/10 Python
Django对models里的objects的使用详解
2019/08/17 Python
python飞机大战pygame游戏之敌机出场实现方法详解
2019/12/17 Python
解决pycharm修改代码后第一次运行不生效的问题
2021/02/06 Python
有机婴儿毛毯和衣服:Monica + Andy
2020/03/01 全球购物
Shopbop中文官网:美国亚马逊旗下时尚购物网站
2020/12/15 全球购物
恒华伟业笔试面试题
2015/02/26 面试题
理工大学毕业生自荐信
2013/11/01 职场文书
数控技术应届生求职信
2013/11/13 职场文书
高级工程师岗位职责
2013/12/15 职场文书
大学系主任推荐信范文
2013/12/24 职场文书
药剂专业求职信
2014/06/20 职场文书
基层党组织建设整改方案
2014/09/16 职场文书
精神病医院见习报告
2014/11/03 职场文书
事业单位财务人员岗位职责
2015/04/14 职场文书
学校节水倡议书
2015/04/29 职场文书
初中家长意见
2015/06/03 职场文书
平凡的世界读书笔记
2015/06/25 职场文书
记者节感言
2015/08/03 职场文书
《鲁班学艺》读后感3篇
2019/11/27 职场文书