`
isiqi
  • 浏览: 16494095 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

GridView控件导出为Excel

阅读更多
把GridView导出为一个Excel文件算是一个经常要用到的功能,也比较简单,我们来扩展一个GridView以实现这样的功能。


控件开发
1、新建一个继承自GridView的类。
/**////<summary>
///继承自GridView
///</summary>

[ToolboxData(@"<{0}:SmartGridViewrunat='server'></{0}:SmartGridView>")]
publicclassSmartGridView:GridView
{
}

2、重写OnRowCommand,以实现把GridView导出为Excel的功能
/**////<summary>
///OnRowCommand
///</summary>
///<paramname="e"></param>

protectedoverridevoidOnRowCommand(GridViewCommandEventArgse)
{
if(e.CommandName.ToLower()=="exporttoexcel")
{
System.Web.HttpContext.Current.Response.ClearContent();
//e.CommandArgument用“;”隔开两部分,左边的部分为导出Excel的文件名称
System.Web.HttpContext.Current.Response.AddHeader("content-disposition","attachment;filename="+e.CommandArgument.ToString().Split(';')[0]+".xls");
System.Web.HttpContext.Current.Response.ContentType
="application/excel";

System.IO.StringWritersw
=newSystem.IO.StringWriter();
HtmlTextWriterhtw
=newHtmlTextWriter(sw);

//e.CommandArgument用“;”隔开两部分,右边的部分为需要隐藏的列的索引(列索引用“,”分开)
if(e.CommandArgument.ToString().Split(';').Length>1)
{
foreach(stringsine.CommandArgument.ToString().Split(';')[1].Split(','))
{
inti;

if(!Int32.TryParse(s,outi))
{
thrownewArgumentException("需要隐藏的列的索引不是整数");
}


if(i>this.Columns.Count)
{
thrownewArgumentOutOfRangeException("需要隐藏的列的索引超出范围");
}


this.Columns[i].Visible=false;
}

}


//隐藏“导出Excel”按钮
((Control)e.CommandSource).Visible=false;

//如果HeaderRow里的控件是button的话,则把它替换成文本
foreach(TableCelltcinthis.HeaderRow.Cells)
{
//TableCell里的每个Control
foreach(Controlcintc.Controls)
{
//如果控件继承自接口IButtonControl
if(c.GetType().GetInterface("IButtonControl")!=null&&c.GetType().GetInterface("IButtonControl").Equals(typeof(IButtonControl)))
{
//如果该控件不是“导出Excel”按钮则把button转换成文本
if(!c.Equals(e.CommandSource))
{
tc.Controls.Clear();
tc.Text
=((IButtonControl)c).Text;
}

}

}

}


//将服务器控件的内容输出到所提供的System.Web.UI.HtmlTextWriter对象中
this.RenderControl(htw);

System.Web.HttpContext.Current.Response.Write(sw.ToString());
System.Web.HttpContext.Current.Response.End();
}


base.OnRowCommand(e);
}



控件使用
添加这个控件到工具箱里,然后拖拽到webform上,在GridView内加一个按钮,把CommandName属性设置为“ExportToExcel”,CommandArgument属性的值用“;”做分隔符分为两部分,左边的部分为导出Excel的文件名称,右边的部分为需要隐藏的列的索引(列索引用“,”分开)
ObjData.cs
usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Web.UI.HtmlControls;

usingSystem.ComponentModel;

/**////<summary>
///OjbData的摘要说明
///</summary>

publicclassOjbData
{
publicOjbData()
{
//
//TODO:在此处添加构造函数逻辑
//
}


[DataObjectMethod(DataObjectMethodType.Select,
true)]
publicDataTableSelect()
{
DataTabledt
=newDataTable();
dt.Columns.Add(
"no",typeof(string));
dt.Columns.Add(
"name",typeof(string));

for(inti=0;i<30;i++)
{
DataRowdr
=dt.NewRow();
dr[
0]="no"+i.ToString().PadLeft(2,'0');
dr[
1]="name"+i.ToString().PadLeft(2,'0');

dt.Rows.Add(dr);
}


returndt;
}

}


Default.aspx
<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Default.aspx.cs"Inherits="_Default"%>

<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title>SmartGridView测试</title>
</head>
<body>
<formid="form1"runat="server">
<div>
<yyc:SmartGridViewID="SmartGridView1"runat="server"AutoGenerateColumns="False"
DataSourceID
="ObjectDataSource1">
<Columns>
<asp:TemplateFieldItemStyle-Width="50px">
<headertemplate>
<asp:Buttonid="btnExportToExcel"runat="server"Text="Excel"CommandName="ExportToExcel"CommandArgument="ExcelFileName;5,6"/>
</headertemplate>
<itemtemplate>
<%#Container.DataItemIndex+1%>
</itemtemplate>
</asp:TemplateField>
<asp:BoundFieldDataField="no"HeaderText="序号"SortExpression="no"ItemStyle-Width="100px"/>
<asp:BoundFieldDataField="name"HeaderText="名称"SortExpression="name"ItemStyle-Width="100px"/>
<asp:BoundFieldDataField="no"HeaderText="序号"SortExpression="no"ItemStyle-Width="100px"/>
<asp:BoundFieldDataField="name"HeaderText="名称"SortExpression="name"ItemStyle-Width="100px"/>
<asp:BoundFieldDataField="no"HeaderText="序号"SortExpression="no"ItemStyle-Width="100px"/>
<asp:BoundFieldDataField="name"HeaderText="名称"SortExpression="name"ItemStyle-Width="100px"/>
</Columns>
</yyc:SmartGridView>
<asp:ObjectDataSourceID="ObjectDataSource1"runat="server"SelectMethod="Select"
TypeName
="OjbData"></asp:ObjectDataSource>
</div>
</form>
</body>
</html>

注:为了防止出错要在.cs代码中加上下面这句
publicoverridevoidVerifyRenderingInServerForm(Controlcontrol)
{

}

另外,如果你的GridView中含有命令按钮的话要在.aspx页面的头部中加上下面这个属性
EnableEventValidation="false"


OK

源码下载

分享到:
评论

相关推荐

    将GridView显示的内容导出为Excel

    这个过程通常涉及到将GridView控件中的内容导出为Excel格式。以下是如何实现这一功能的详细步骤: 首先,确保在你的ASP.NET页面中有一个名为`GridView_CheckStat`的GridView控件,它已经绑定了要导出的数据。用户在...

    ASP.NET中把Gridview导出为EXCEL

    在ASP.NET开发中,将Gridview控件中的数据导出到Excel是一种常见的需求,这有助于用户方便地管理和处理大量数据。下面将详细讲解如何实现这一功能,并解决中文乱码问题。 首先,我们需要理解ASP.NET Gridview的基本...

    GridView中导出数据到 Excel

    然而,有时候我们需要将这些数据导出为Excel格式,以便用户进行更灵活的处理,比如分析、打印或者存储。这个过程涉及到几个关键的技术点,我们将详细探讨。 首先,了解GridView的基本操作。GridView控件提供了丰富...

    防止GridView导出到excel中自动转成科学计数法

    当使用ASP.NET GridView控件导出数据到Excel文件时,如果某一列包含较大的数值(通常超过11位数字),Excel会默认将其格式转换为科学记数法,而非原始数值显示。这种情况下,原始的数值如“123456789012”可能会被...

    DEV GridControl GridView导出到Excel 支持多个Sheet 源码

    在导出过程中,为了保持数据的格式和样式,比如颜色、字体、边框等,需要将GridView的样式信息转换为Excel的样式,并应用到导出的单元格上。这可能涉及到一些复杂的逻辑,因为DevExpress的样式和Excel的样式并不完全...

    GridView导出Excel DataTable导出Excel 实例源码

    在.NET开发环境中,GridView控件是经常用于展示数据表格的工具,而Excel则是常见的数据处理和分析软件。本文将深入探讨如何使用C#语言,在VS2008中结合Access数据库,实现GridView控件的数据导出到Excel以及直接将...

    将gridview数据导出到word和excel

    在.NET开发环境中,GridView控件是ASP.NET网页中常用的数据展示工具,它可以方便地从数据库或其他数据源获取数据并进行显示。然而,有时我们需要将GridView中的数据导出到其他格式,比如Word或Excel,以便于进一步...

    gridview导出数据到Excel

    在这个页面上,我们将放置一个GridView控件,用于显示数据,并添加一个按钮,用于触发数据导出到Excel的操作。 在`ExcelTest.aspx.cs`的后台代码中,我们需要引用必要的命名空间,例如`System.Data.OleDb`,用于与...

    GridView 导出到 Excel文件中

    而将GridView的数据导出到Excel文件是常见的需求,这通常涉及网页到服务器端的数据处理以及文件响应。下面将详细解释如何实现这个功能。 首先,了解`VerifyRenderingInServerForm`方法。这是一个在服务器控件呈现前...

    asp.net 导出GridView里的数据到Excel中

    首先,需要在ASP.NET页面中添加GridView控件以及用于触发导出操作的按钮。例如,在`Default.aspx`文件中添加以下代码: ```html &lt;asp:GridView ID="gvwjdccx" runat="server"&gt; &lt;!-- GridView配置项 --&gt; &lt;/asp:...

    导出devexpress插件的GridControl控件中GridView表格中的数据到excel

    只能导出导出devexpress插件的GridControl控件中GridView表格中的数据,表格中有什么数据导出什么数据,列顺序也不变。 文件说明: 1.ExportTableExcel.cs:实现导出逻辑的类 2.ExportExcelStyle.cs:导出的...

    gridview导出excel表格

    本文将详细介绍如何通过ASP.NET Web Forms技术,利用GridView控件将数据导出到Excel文件中。 #### 二、准备工作 1. **环境搭建**:确保已经安装了.NET Framework开发环境,并且创建了一个新的ASP.NET Web Forms项目...

    asp.net GridView导出excel

    ASP.NET GridView控件是Web开发中常用的数据展示组件,它能够方便地展示数据库或其他数据源中的数据,并提供了丰富的自定义和操作功能。在许多实际应用中,用户可能需要将GridView中的数据导出到Excel文件中,以便...

    asp.net Gridview Export PDF,Word,Excel,Csv等等(GridView导出为Excel,word,pdf,csv)源代码

    本主题主要围绕如何实现ASP.NET GridView控件的数据导出功能进行深入探讨。 首先,我们要理解导出的核心概念。导出是将网页上的数据显示在另一种文件格式中,这通常涉及数据的转换和格式化。对于Excel,我们可以...

    Gridview导出数据到excel

    在.NET开发环境中,GridView控件是ASP.NET网页中常用的数据展示工具,它可以方便地从数据库或其他数据源中显示数据。而“Gridview导出数据到excel”是指将GridView中的数据显示在Excel工作表中,以便用户可以进行...

    扩展GridView控件-导出数据源的数据为Excel、Word或Text

    本项目"扩展GridView控件-导出数据源的数据为Excel、Word或Text"就是为了实现这一功能。 首先,我们要理解GridView控件的基本工作原理。GridView控件是基于Web Forms的,它可以直接绑定到诸如SQL数据库、XML文件、...

    C#使用RenderControl将GridView控件导出到EXCEL的方法

    本文实例展示了C#使用RenderControl将GridView控件导出到EXCEL的方法,是非常实用的一个功能,分享给大家供大家参考。具体如下: 主要功能代码如下: // 把GridView输出到Excel文件 private void ExportExcel...

    GridView导出Excel实例

    然而,有时我们需要将GridView中的数据导出为Excel格式,以便用户进行进一步处理或存储。这篇教程将探讨如何实现GridView到Excel的导出功能,基于ASP.NET 2.0平台,使用C#编程语言。 首先,我们需要创建一个ASP.NET...

    Gridview 导出Excel

    2. 添加导出按钮:在GridView旁边或者上方添加一个Button控件,作为导出Excel的触发器。在Button的Click事件处理程序中编写导出逻辑。 3. 编写导出逻辑: - 初始化Response对象,设置MIME类型为“application/vnd....

    GridView 导出excel ,用2003可以打开,2007不能

    在.NET开发中,GridView控件经常用于展示数据表格,而导出到Excel是常见的功能需求。问题中的描述表明,一个GridView导出的Excel文件在Microsoft Excel 2003下可以正常打开,但在2007或更高版本中却遇到了问题。这...

Global site tag (gtag.js) - Google Analytics