实现easyui的datagrid导出为excel

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

export.js

[javascript] view plain copy
print ? 在CODE上查看代码片 派生到我的代码片
  1. function ChangeToTable(printDatagrid) {  
  2.     var tableString = '<table cellspacing="0" class="pb">';  
  3.     var frozenColumns = printDatagrid.datagrid("options").frozenColumns;  // 得到frozenColumns对象  
  4.     var columns = printDatagrid.datagrid("options").columns;    // 得到columns对象  
  5.     var nameList = new Array();  
  6.   
  7.     // 载入title  
  8.     if (typeof columns != 'undefined' && columns != '') {  
  9.         $(columns).each(function (index) {  
  10.             tableString += '\n<tr>';  
  11.             if (typeof frozenColumns != 'undefined' && typeof frozenColumns[index] != 'undefined') {  
  12.                 for (var i = 0; i < frozenColumns[index].length; ++i) {  
  13.                     if (!frozenColumns[index][i].hidden) {  
  14.                         tableString += '\n<th width="' + frozenColumns[index][i].width + '"';  
  15.                         if (typeof frozenColumns[index][i].rowspan != 'undefined' && frozenColumns[index][i].rowspan > 1) {  
  16.                             tableString += ' rowspan="' + frozenColumns[index][i].rowspan + '"';  
  17.                         }  
  18.                         if (typeof frozenColumns[index][i].colspan != 'undefined' && frozenColumns[index][i].colspan > 1) {  
  19.                             tableString += ' colspan="' + frozenColumns[index][i].colspan + '"';  
  20.                         }  
  21.                         if (typeof frozenColumns[index][i].field != 'undefined' && frozenColumns[index][i].field != '') {  
  22.                             nameList.push(frozenColumns[index][i]);  
  23.                         }  
  24.                         tableString += '>' + frozenColumns[0][i].title + '</th>';  
  25.                     }  
  26.                 }  
  27.             }  
  28.             for (var i = 0; i < columns[index].length; ++i) {  
  29.                 if (!columns[index][i].hidden) {  
  30.                     tableString += '\n<th width="' + columns[index][i].width + '"';  
  31.                     if (typeof columns[index][i].rowspan != 'undefined' && columns[index][i].rowspan > 1) {  
  32.                         tableString += ' rowspan="' + columns[index][i].rowspan + '"';  
  33.                     }  
  34.                     if (typeof columns[index][i].colspan != 'undefined' && columns[index][i].colspan > 1) {  
  35.                         tableString += ' colspan="' + columns[index][i].colspan + '"';  
  36.                     }  
  37.                     if (typeof columns[index][i].field != 'undefined' && columns[index][i].field != '') {  
  38.                         nameList.push(columns[index][i]);  
  39.                     }  
  40.                     tableString += '>' + columns[index][i].title + '</th>';  
  41.                 }  
  42.             }  
  43.             tableString += '\n</tr>';  
  44.         });  
  45.     }  
  46.     // 载入内容  
  47.     var rows = printDatagrid.datagrid("getRows"); // 这段代码是获取当前页的所有行  
  48.     for (var i = 0; i < rows.length; ++i) {  
  49.         tableString += '\n<tr>';  
  50.         for (var j = 0; j < nameList.length; ++j) {  
  51.             var e = nameList[j].field.lastIndexOf('_0');  
  52.   
  53.             tableString += '\n<td';  
  54.             if (nameList[j].align != 'undefined' && nameList[j].align != '') {  
  55.                 tableString += ' style="text-align:' + nameList[j].align + ';"';  
  56.             }  
  57.             tableString += '>';  
  58.             if (e + 2 == nameList[j].field.length) {  
  59.                 tableString += rows[i][nameList[j].field.substring(0, e)];  
  60.             }  
  61.             else  
  62.                 tableString += rows[i][nameList[j].field];  
  63.             tableString += '</td>';  
  64.         }  
  65.         tableString += '\n</tr>';  
  66.     }  
  67.     tableString += '\n</table>';  
  68.     return tableString;  
  69. }  
  70.   
  71. function Export(strXlsName, exportGrid) {  
  72.     var f = $('<form action="/export.aspx" method="post" id="fm1"></form>');  
  73.     var i = $('<input type="hidden" id="txtContent" name="txtContent" />');  
  74.     var l = $('<input type="hidden" id="txtName" name="txtName" />');  
  75.     i.val(ChangeToTable(exportGrid));  
  76.     i.appendTo(f);  
  77.     l.val(strXlsName);  
  78.     l.appendTo(f);  
  79.     f.appendTo(document.body).submit();  
  80.     document.body.removeChild(f);  
  81. }  
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

  1. protected void Page_Load(object sender, EventArgs e)  
  2.         {  
  3.             Response.Clear();  
  4.             Response.Buffer = true;  
  5.             Response.Charset = "utf-8";  
  6.             Response.ContentEncoding = System.Text.Encoding.UTF8;  
  7.             Response.AppendHeader("content-disposition""attachment;filename=\"" + HttpUtility.HtmlEncode(Request["txtName"]??DateTime.Now.ToString("yyyyMMdd")) + ".xls\"");  
  8.             Response.ContentType = "Application/ms-excel";  
  9.             Response.Write("<html>\n<head>\n");  
  10.             Response.Write("<style type=\"text/css\">\n.pb{font-size:13px;border-collapse:collapse;} "+  
  11.                            "\n.pb th{font-weight:bold;text-align:center;border:0.5pt solid windowtext;padding:2px;} " +  
  12.                            "\n.pb td{border:0.5pt solid windowtext;padding:2px;}\n</style>\n</head>\n");  
  13.             Response.Write("<body>\n" + Request["txtContent"] + "\n</body>\n</html>");  
  14.             Response.Flush();  
  15.             Response.End();   
  16.         }  
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为了防止前台页面内容干扰,前台页面只留:

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

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

调用方法:

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


转载自:http://www.tzhtec.com/art/e058ffd7fa.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值