• 手把手教你如何扩展GridView之自带Excel和Word导出


    最新重构源码下载:打造0代码全自动GridView-天具神力     
       
    在web应用程序中,我们是不是很发愁打印问题,您是不是有过为了打印写Activex的经历,我们有没有想过,Word和Excel的打印功能能被我们利用起来呢?只要我们将我们将数据导出到Excel或者Word中,打印岂不是小case了么。下面就谈谈如何让GridView自己支持导出Excel和Word 。
        首先增加了两个属性,用于指示是否支持Excel导出和Word导出
     
      //增加了一个设置是否显示“导出Word”按钮的属性
            /// <summary>
            
    /// 排序提示信息
            
    /// </summary>

            [
            Description(
    "显示导出到Word"),
            Category(
    "扩展"),
             DefaultValue(
    true)
            ]
            
    public virtual bool ShowExportWord
            
    {
                
    get
                
    {
                    
    object obj2 = this.ViewState["ShowExportWord"];
                    
    if (obj2 != null)
                    
    {
                        
    return (bool)obj2;
                    }

                    
    return true;
                }

                
    set
                
    {
                    
    bool aShowExportWord = this.ShowExportWord;
                    
    if (value != aShowExportWord)
                    
    {
                        
    this.ViewState["ShowExportWord"= value;
                        
    if (base.Initialized)
                        
    {
                            
    base.RequiresDataBinding = true;
                        }

                    }

                }

            }

            
    //增加了一个设置是否显示“导出Excel”按钮的属性
            [
           Description(
    "显示导出到Excel"),
           Category(
    "扩展"),
           DefaultValue(
    true)
           ]
            
    public virtual bool ShowExportExcel
            
    {
                
    get
                
    {
                    
    object obj2 = this.ViewState["ShowExportExcel"];
                    
    if (obj2 != null)
                    
    {
                        
    return (bool)obj2;
                    }

                    
    return true;
                }

                
    set
                
    {
                    
    bool aShowExportExcel = this.ShowExportExcel;
                    
    if (value != aShowExportExcel)
                    
    {
                        
    this.ViewState["ShowExportExcel"= value;
                        
    if (base.Initialized)
                        
    {
                            
    base.RequiresDataBinding = true;
                        }

                    }

                }

            }
    声明两个LinkButton控件btnExportWord,btnExport,分别用于点击导出Excel和点击导出word,并在控件的OnInit事件中初始化两个控件
    声明两个LinkButton,并在控件的OnInit中初始化

    将两个LinkButton添加到GridView子控件中。
     protected override int CreateChildControls(System.Collections.IEnumerable dataSource, bool dataBinding) {
                
    int res = base.CreateChildControls(dataSource, dataBinding);
                    
    try
                    
    {
                        GridViewRow row 
    = new GridViewRow(00, DataControlRowType.Pager, DataControlRowState.Normal);  TableCell cell2 = new TableCell();
                        cell2.HorizontalAlign 
    = HorizontalAlign.Right;
                        cell2.Wrap 
    = falseif (this.ShowExportExcel == true)
                        
    {
                            l1 
    = new Literal();
                            l1.Text 
    = " [";
                            cell2.Controls.Add(l1);
                            cell2.Controls.Add(btnExport);
                            l1 
    = new Literal();
                            l1.Text 
    = "";
                            cell2.Controls.Add(l1);
                        }


                        
    if (this.ShowExportWord == true)
                        
    {
                            l1 
    = new Literal();
                            l1.Text 
    = " [";
                            cell2.Controls.Add(l1);
                            cell2.Controls.Add(btnExportWord);
                            l1 
    = new Literal();
                            l1.Text 
    = "";
                            cell2.Controls.Add(l1);
                        }
     r.Cells.Add(cell2);
                        
    this.Controls[0].Controls.AddAt(0, row);
                    }

                    
    catch
                    
    {
                    }

                }

                
    return res;
            }
    在导出的时候,我们希望一些列不被导出,如修改,删除这样的列,因此我们添加了这样的一个属性
    用于指定不被导出列,列名之间用,隔开
    在导出的时候,原来的GridView列表中会有一些LinkButton或者DropDownList控件,导出的时候,我们也希望将其换成纯文本,用下面这个函数可以完成这个目的
    用于将GridView中的LinkButton和DropDownList转换成文本的方法
    下面是处理ItemCommand,将GridView导出的代码
    处理OnRowCommand事件,将GridView数据导出到Excel和Word

    使用的时候,只要指定ShowExportExcel=True,ShowExportWord=True就自动出现导出Word和导出Excel的按钮了,点击自动会将GridView中的数据导出到Word或者Excel中了,如果原GridView是多页的,那也会自动将全部数据(而不是当前页的数据)导出,而且会剔除原来数据中的一些超级链接。使用起来相当简单,效果页非常好。
    上篇文章地址:
                             手把手教你如何扩展GridView之自带分页 
                             手把手教你如何扩展GridView之自带CheckBox
                             手把手教你如何扩展GridView之自动排序篇
  • 相关阅读:
    C# 从类库中获取资源图片,把图片资源保存到类库中
    C# Bitmap/png转成jpg格式,压缩图片
    C# 窗体间传值(使用委托与自定义事件)
    C# Image与Base64编码互转函数
    简单Tomcat HTTP RPC框架
    Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
    Java序列化机制和原理
    攻破JAVA NIO技术壁垒
    代理模式(Proxy)
    Java序列化与反序列化
  • 原文地址:https://www.cnblogs.com/jillzhang/p/778393.html
Copyright © 2020-2023  润新知