Asp.net Gridview导出Excel
前台页面放一个GridView什么的就不说了,要注意的是在
<%@ Page Language="C#" AutoEventWireup="true" Codebehind="ReferPriceIndex.aspx.cs" EnableEventValidation="false"
Inherits="ZTE.Fol.Fund.UI.Web.InsideTrade.ReferPrice.ReferPriceIndex" %>
标签里面加EnableEventValidation属性
同时后台加上
/// <summary>
/// 内容摘要:重写空的VerifyRenderingInServerForm方法,避免在导出Excel文件的时候出现
/// “……必须放在具有 runat=server 的窗体标记内”的异常
/// 另外说明:
/// 在asp.net2.0中,控件的校验严格了,
/// RenderControl代码只有走正常流程在render方法中它自己调用才能成功,
/// 在自己写的事件方法中调用就会出现这个错误。
/// </summary>
/// <param name="control">提交控件</param>
public override void VerifyRenderingInServerForm(Control control)
{
}// end VerifyRenderingInServerForm
这两个地方都加上,可以防止导出excel的时候导出整个页面
BeadRollListExportExcel.aspx 页面就是导出的页面了,页面代码:
<asp:GridView ID="GridView1" BorderColor="Black" runat="server" AutoGenerateColumns="False"
Font-Size="12px" Width="530px" AllowSorting="True"
OnRowCreated="GridView1_RowCreated">
<Columns>
<asp:TemplateField HeaderText="序号" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<%#(((GridViewRow)Container).DataItemIndex + 1) %>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="PrimarySchoolName" HeaderText="学校" />
<asp:BoundField DataField="TypeName" HeaderText="类别" />
<asp:BoundField DataField="Name" HeaderText="姓名" />
<asp:BoundField DataField="SexCode" HeaderText="性别" />
<asp:BoundField DataField="" HeaderText="备注" />
</Columns>
<HeaderStyle BackColor="Azure" Font-Size="12px" HorizontalAlign="Center" />
<RowStyle HorizontalAlign="Center" />
<PagerStyle HorizontalAlign="Center" />
</asp:GridView>
后台代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GetList();
Export("application/ms-excel", string.Format("{0}****.xls", DateTime.Now.ToString("yyyy-MM-dd")));
}
} public void GetList()
{
string studentType = Request.QueryString["studentType"].ToString();
string schoolCode = Request.QueryString["schoolCode"].ToString();
string district = Request.QueryString["district"].ToString();
string strWhere = " 1=1";
if (!string.IsNullOrEmpty(studentType))
{
strWhere += " and TypeCode='" + studentType + "'";
}
if (!string.IsNullOrEmpty(district))
{
strWhere += " and DistrictCode='" + district + "'";
}
if (!string.IsNullOrEmpty(schoolCode))
{
strWhere += " and PrimarySchoolCode ='" + schoolCode + "'";
}
DataTable dt = new BLL.ObjMethod().GetList("View_ExportExcelStudent", strWhere); GridView1.DataSource = dt;
GridView1.DataBind();
} /// <summary>
/// 定义导出Excel的函数
/// </summary>
/// <param name="FileType"></param>
/// <param name="FileName"></param>
private void Export(string FileType, string FileName)
{
for (int i = ; i < GridView1.Rows.Count; i++)
{
GridView1.Rows[i].Cells[].Attributes.Add("style", "vnd.ms-excel.numberformat:@");
}
Response.Charset = "GB2312";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlDecode(FileName, Encoding.UTF8).ToString());//HttpUtility.UrlDecode输出中文文件名称
Response.ContentType = FileType;
this.EnableViewState = false;
StringWriter tw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
GridView1.RenderControl(hw);
Response.Write(tw.ToString());
Response.End();
}
/// <summary>
/// 此方法必重写,否则会出错
/// </summary>
/// <param name="control"></param>
public override void VerifyRenderingInServerForm(Control control)
{
} protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
//列头前面在加一行
if (e.Row.RowType == DataControlRowType.Header)
{
GridViewRow rowHeader = new GridViewRow(, , DataControlRowType.Header, DataControlRowState.Normal);//表头行
TableHeaderCell cell = new TableHeaderCell();
cell.Text = "*****";
cell.ColumnSpan = ;
rowHeader.Cells.Add(cell);
((GridView)sender).Controls[].Controls.AddAt(, rowHeader);
}
}
Asp.net Gridview导出Excel的更多相关文章
- ASP.NET gridview导出excel,防止繁体产生有乱码的方式
//1.先引用比如 : using System; using System.Collections.Generic; using System.Linq; using System.Web; usi ...
- asp.net中导出Excel的方法
一.asp.net中导出Excel的方法: 本文转载 在asp.net中导出Excel有两种方法,一种是将导出的文件存放在服务器某个文件夹下面,然后将文件地址输出在浏览器上:一种是将文件直接将文件输出 ...
- ASP.net中导出Excel的简单方法介绍
下面介绍一种ASP.net中导出Excel的简单方法 先上代码:前台代码如下(这是自己项目里面写的一点代码先贴出来吧) <div id="export" runat=&quo ...
- 关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致的解决办法
-----转载:http://blog.csdn.net/sgear/article/details/7663502 关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格 ...
- ASP.NET MVC导出excel
ASP.NET MVC导出excel 要在ASP.NET MVC站点上做excel导出功能,但是要导出的excel文件比较大,有几十M,所以导出比较费时,为了不影响对界面的其它操作,我就采用异步的方式 ...
- C# asp.net中导出Excel表时总出现"只能在执行 Render() 的过程中调用 RegisterForEventValidation
C# asp.net中导出Excel表时总出现"只能在执行 Render() 的过程中调用 RegisterForEventValidation 后台添加以下方法:/// <summa ...
- Asp.net中导出Excel文档(Gridview)
主要思路,通过GridView来导出文档. 新建一个Aspx页面,页面创建GridView控件,后台绑定好数据源.然后load中直接打印即可导出 前台的GridView <asp:GridVie ...
- GridView导出Excel的超好样例
事实上网上有非常多关于Excel的样例,可是不是非常好,他们的代码没有非常全,读的起来还非常晦涩.经过这几天的摸索,最终能够完毕我想要导出报表Excel的效果了.以下是我的效果图. 一.前台的页面图 ...
- ASP.NET MVC导出excel(数据量大,非常耗时的,异步导出)
要在ASP.NET MVC站点上做excel导出功能,但是要导出的excel文件比较大,有几十M,所以导出比较费时,为了不影响对界面的其它操作,我就采用异步的方式,后台开辟一个线程将excel导出到指 ...
随机推荐
- 配置Ubuntu开发环境
前言 新买了一台ThinkPad E431,主要看中了硬盘500G和7200转/分钟的速度,因此准备从x220上把工作环境迁移到新买的笔记本上. 为什么不要公司的电脑,是由于160G的ssd硬盘实在是 ...
- [React Native] Build a Separator UI component
In this lesson we'll create a reusable React Native separator component which manages it's own style ...
- Spring(AbstractRoutingDataSource)实现动态数据源切换--转载
原始出处:http://linhongyu.blog.51cto.com/6373370/1615895 一.前言 近期一项目A需实现数据同步到另一项目B数据库中,在不改变B项目的情况下,只好选择项目 ...
- ifndef/define/endif 的作用
转载自百度百科 ,感谢度娘 1 2 3 #ifdef语句1 //程序2 #endif 可翻译为:如果宏定义了语句1则执行程序2. 作用:我们可以用它区隔一些与特定头文件.程序库和其他文件版本有关的代码 ...
- C++ (P160—)多继承 二义性 虚基类 “向上转型”
1 多继承中,必须给每个基类指定一种派生类型,如果缺省,相应的基类则取私有派生类型,而不是和前一个基类取相同的派生类型 2 一个类的保护成员只能被本类的成员函数或者它的派生类成员函数访问 3 由于c+ ...
- PS基础
1.仿制图章工具:[小 ]大 建立一个新的图层,可以进行图片某个部分的复制,完全复制之后,还可以调整大小(ctrl+t), 颜色(ctrl+u打开色相饱和度的菜单)等. 2.修复画笔工具:与仿制 ...
- Callable、Future和FutureTask使用说明
普通的创建线程,一种是直接继承Thread,另外一种就是实现Runnable接口.但是这两种都无法在执行完任务之后获取执行结果,Callable.Future就提供了这样的便利. Future的方 ...
- windows下搭建属于自己的web服务器
这次需要记录一下我搭建web服务器的过程. 第一步,确定自己要使用的平台:这次我用的是windows2008 server版本 第二步,计划是想要纯手工的安装apache.php等.但是我们可以下载一 ...
- Linux 的使用基础---Linux的常用命令
自己电脑的安装的软件太多了,如果重装linux系统的话,是在是太麻烦了,本身电脑系统是32位的,硬件上的配置也行,所以就安装了虚拟机,在虚拟机上又安装了一个Linuxd 系统,虽然速度是有些慢,总比浪 ...
- 永久设置 NLS_DATE_FORMAT 方法
在客户端(如WEB服务器),设置环境变量即可,如: NLS_DATE_FORMAT YYYY-MM-DD HH24:MI:SS 在程序处执行会影响后续SQL性能 ALTER SESSION SET ...