zoukankan      html  css  js  c++  java
  • Ligerui中grid导出为Excel和Word 的例子

    下面采用的导EXCEL方法,适合不翻页的grid,而且无需再读一次数据库,

    对于翻页的grid来说,要导全部,当然后台要再读一次数据库,这种导EXCEL方法baidu一大堆,这里不重复

    代码:

    grid.htm

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title></title>
        <link href="../lib/ligerUI/skins/Aqua/css/ligerui-all.css" rel="stylesheet" type="text/css" />
        <link href="../lib/ligerUI/skins/ligerui-icons.css" rel="stylesheet" type="text/css" />
        <script src="../lib/jquery/jquery-1.3.2.min.js" type="text/javascript"></script>
        <script src="../lib/ligerUI/js/plugins/ligerGrid.js" type="text/javascript"></script>
        <script src="../lib/ligerUI/js/plugins/ligerToolBar.js" type="text/javascript"></script>
        <script src="../lib/ligerUI/js/plugins/ligerDialog.js" type="text/javascript"></script>
        <script src="AllProductData.js" type="text/javascript"></script> 
        <script type="text/javascript">
            $(function () {
            
                $("#toptoolbar").ligerToolBar({ items: [
                                                            {text: '导出Excel',id:'excel',icon:'print',click:itemclick},
                                                            {text: '导出Word' ,id:'word',icon:'print',click:itemclick}                                                   
                                                       ]
                                              });        
             
                $("#maingrid").ligerGrid({
                    columns: [
                        { display: '主键', name: 'ProductID', type: 'int', totalSummary:{type: 'count'}},
                        { display: '产品名', name: 'ProductName', align: 'left',  200 },
                        { display: '单价', name: 'UnitPrice', align: 'right', type:'float',totalSummary:{render: function (suminf, column, cell){return '<div>最大值:' + suminf.max + '</div>';},align: 'left'}},
                        { display: '仓库数量', name: 'UnitsInStock', align: 'right', type: 'float',totalSummary:{type: 'sum'}}
                    ], 
                    dataAction: 'local',
                    data: AllProductData, sortName: 'ProductID',
                    showTitle: false, totalRender: f_totalRender,
                     '100%', height: '100%',heightDiff:-10
                });
    
                $("#pageloading").hide();
            });
            
            function f_totalRender(data, currentPageData)
            {
                return "总仓库数量:"+data.UnitsInStockTotal; 
            }
                    
            function itemclick(item)
            {   
                grid = $("#maingrid").ligerGetGridManager();                
                if(item.id)
                {
                    switch (item.id)
                    {   
                        case "excel":$.ligerDialog.open({url: "../service/print.aspx?exporttype=xls"});return;
                        case "word":$.ligerDialog.open({url: "../service/print.aspx?exporttype=doc"});return;
                    }   
                }            
            }                 
        </script>
    </head>
    <body style="padding:0px; overflow:hidden; height:100%  ">
        <div id="toptoolbar"></div> 
        <div id="maingrid" style="margin:0; padding:0"></div> 
        <div style="display:none;"></div> 
    </body>
    </html>

    导出页面print.aspx

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="print.aspx.cs" Inherits="example" EnableEventValidation = "false" ValidateRequest="false" %>
    
    <html>
    <head>
        <title></title>
        <link href="../lib/ligerUI/skins/aqua/css/ligerui-all.css" rel="stylesheet" type="text/css" />        
        <script src="../lib/jquery/jquery-1.3.2.min.js" type="text/javascript"></script>
        <script src="../lib/ligerUI1.1.0/js/ligerui.min.js" type="text/javascript"></script>        
        <script type="text/javascript"> 
            function GetQueryString(name)  
            {  
                var reg = new RegExp("(^|&)"+name+"=([^&]*)(&|$)");  
                var r= window.location.search.substr(1).match(reg);  
                if (r!=null) return unescape(r[2]);return null;  
            }    
                   
            function gethtml(g)
            {                                
               parent.$(".l-grid-header-table",g).attr("border","1");
               parent.$(".l-grid-body-table",g).attr("border","1");
               
                $("#hf").val(
                            parent.$(".l-grid-header",g).html()+             //这里把表头捞出来
                            parent.$(".l-grid-body-inner",g).html()+         //表身,具体数据
                            parent.$(".l-panel-bar-total",g).html()+"<br/>"+ //这是全局汇总,1.1.0版本新添加的                       
                            parent.$(".l-bar-text",g).html()                 //这是翻页讯息       
                            );
                            
               parent.$(".l-grid-header-table",g).attr("border","0");
               parent.$(".l-grid-body-table",g).attr("border","0");                        
             // parent.$(".l-grid-header-table",g).removeAttr("border");              
             // parent.$(".l-grid-body-table",g).removeAttr("border");                                                
            }
            
            function init()
            {
                if (GetQueryString("exporttype")=="xls")
                {
                    document.getElementById("btnxls").click();
                }    
                else
                {
                    document.getElementById("btndoc").click();    
                }
                setTimeout(function ()
                {
                    parent.$.ligerDialog.close();               
                }, 3000);               
            }
                                    
        </script>
    </head>
    <body style="padding:20px" onload="init()">
        <form id="form1" runat="server">        
        导出中...
        <div style="visibility:hidden">
        <asp:Button ID="btnxls" runat="server" Text="导出Excel" onclick="Button1_Click" OnClientClick="gethtml('#maingrid')"/>
        <asp:Button ID="btndoc" runat="server" Text="导出Word"  onclick="Button2_Click" OnClientClick="gethtml('#maingrid')"/>
        </div>
        <asp:HiddenField ID="hf" runat="server" />  
        </form>
    </body>
    </html>

    print.aspx.cs

    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    
    namespace service
    {
        public partial class print : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                }
            }
    
            void exportexcel()
            {
                Response.Clear();
                Response.Buffer = true;
                Response.Charset = "utf-8";
                Response.AppendHeader("Content-Disposition", "attachment;filename=tmp.xls");
                Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
                
                Response.ContentType = "application/ms-excel";
                this.EnableViewState = false;
                System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
                System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
                oHtmlTextWriter.WriteLine(hf.Value);  
                Response.Write(oStringWriter.ToString());            
                Response.End();
            }
    
            void exportword()
            {
                Response.Clear();
                Response.Buffer = true;
                Response.Charset = "utf-8";
                Response.AppendHeader("Content-Disposition", "attachment;filename=tmp.doc");
                Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
    
                Response.ContentType = "application/ms-word";
                this.EnableViewState = false;
                System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
                System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
                oHtmlTextWriter.WriteLine(hf.Value);
                Response.Write(oStringWriter.ToString());
                Response.End();
            }
    
            protected void Button1_Click(object sender, EventArgs e)
            {
                exportexcel();
            }
    
            protected void Button2_Click(object sender, EventArgs e)
            {
                exportword();
            }
    
        }
    }

    原理:在点导出按钮的时候,弹一个print.aspx页面,这个页面把grid的html传给自己一个叫hf的hidden里面,然后后台response输出这个html

  • 相关阅读:
    bzoj1015星球大战(并查集+离线)
    bzoj1085骑士精神(搜索)
    bzoj1051受欢迎的牛(Tarjan)
    左偏树学习
    hdu1512 Monkey King(并查集,左偏堆)
    左偏树(模板)
    PAT (Basic Level) Practice (中文) 1079 延迟的回文数 (20分) (大数加法)
    PAT (Basic Level) Practice (中文) 1078 字符串压缩与解压 (20分) (字符转数字——栈存放)
    PAT (Basic Level) Practice (中文) 1077 互评成绩计算 (20分) (四舍五入保留整数)
    PAT (Basic Level) Practice (中文) 1076 Wifi密码 (15分)
  • 原文地址:https://www.cnblogs.com/Fooo/p/2614912.html
Copyright © 2011-2022 走看看