我的导出到Excel出现一个这样的错误:只能在执行 Render() 的过程中调用 RegisterForEventValidation;
我做了一个小例子实出了GridView数据导出到Excel,后来我就把代码复制到我写的程序中去,然后就出了一个这样的错误,这是为什么呢?
代码如下: //将GridView控件中数据以反指定格式输出
private void Export(string FileType, string FileName)
{
Response.Charset = "GB2312";
Response.ContentEncoding = System.Text.Encoding.UTF7;
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
Response.ContentType = FileType;
this.EnableViewState = false;
System.IO.StringWriter tw = new System.IO.StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
this.gvExcel.RenderControl(hw);
Response.Write(tw.ToString());
Response.End(); } public override void VerifyRenderingInServerForm(Control control)
{
}
解发事件
protected void btnOut_Click(object sender, EventArgs e)
{
Export("application/ms-excel", "book1.xls");
}
我做了一个小例子实出了GridView数据导出到Excel,后来我就把代码复制到我写的程序中去,然后就出了一个这样的错误,这是为什么呢?
代码如下: //将GridView控件中数据以反指定格式输出
private void Export(string FileType, string FileName)
{
Response.Charset = "GB2312";
Response.ContentEncoding = System.Text.Encoding.UTF7;
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
Response.ContentType = FileType;
this.EnableViewState = false;
System.IO.StringWriter tw = new System.IO.StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
this.gvExcel.RenderControl(hw);
Response.Write(tw.ToString());
Response.End(); } public override void VerifyRenderingInServerForm(Control control)
{
}
解发事件
protected void btnOut_Click(object sender, EventArgs e)
{
Export("application/ms-excel", "book1.xls");
}
解决方案 »
- asp.net中新建一个cs文件怎样才能在文件中使用到session值?
- 对于你们来说几个简单的问题 我一次发出来吧
- linq to xml 转换类型问题
- APP_Code里面的类如何访问页面?
- 一个很简单的问题
- oracle的服务都启动了,为什么连不上oracle服务器?请各位帮帮忙阿!十万火急阿!!!
- MCV4中做模糊查询如何获得HTML编译器中TextBox的值不走JS,和用FORM标签
- 急!高分求日程安排的源码或者干净日程控件!
- DataReader查询结果为空时,绑定到datagrid出错
- 请教一个模拟登陆的问题!!求高手帮忙!!
- Frame框架拖动问题
- 如何合并TextBox ,DropDownList 组成一个新控件,DropDownList绑定到TextBox
{
base.VerifyRenderingInServerForm(control);
} 如果写了这一段代码,又会出现以下的借误:
类型“GridView”的控件“gvExcel”必须放在具有 runat=server 的窗体标记内。
'sql = "select x.name,case x.H_bzid when 'wz_tjxx_zh_djb.aspx' then 'tj/wz_tjxx_zh_djb.aspx' when '../hebeitj/hb_tjxx_djb.aspx' then 'hebeitj/hb_tjxx_djb.aspx' when '../wsbxm/tjxx_hch.aspx' then 'wsbxm/tjxx_hch.aspx' end as H_bzid,d.presj ,d.nextsj,d.bz,d.jcid,d.Avgsbp,d.Avgdbp from ddsf d left join xyjcb x on d.jcid=x.id where d.nextsj<='" & Now.ToShortDateString.ToString & " ' and x.status=0 " & sqtjzhi & " order by d.nextsj"
sql = "select x.name as 姓名,d.Avgsbp as 平均血压SBP,d.Avgdbp as 平均血压DBP,convert(varchar(10),d.presj,121) as 上次随访时间 ,convert(varchar(10),d.nextsj,121) as 下次随访 from ddsf d left join xyjcb x on d.jcid=x.id where d.nextsj<='" & Today.AddDays(14).ToString & " ' and x.status=0 " & sqtjzhi & " " + strssrq + " order by d.nextsj" Dim adapter As New SqlDataAdapter(sql, con)
Dim ds As New DataSet
adapter.Fill(ds)
DataGrid1.DataSource = ds.Tables(0)
DataGrid1.DataBind()
con.Close()
con.Dispose()
con = Nothing
''
Response.Clear()
Response.Charset = "GB2312"
Response.ContentEncoding = System.Text.Encoding.UTF8
'Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(file.Name))
''Response.ContentType = "application/ms-excel"
''
Response.ContentType = "application/vnd.ms-excel"
' 从Content-Type header中去除charset设置 Response.Charset = "" ' 关闭 ViewState
Me.EnableViewState = False
Dim tw As New System.IO.StringWriter
Dim hw As New System.Web.UI.HtmlTextWriter(tw)
' 获取control的HTML
DataGrid1.RenderControl(hw)
' 把HTML写回浏览器
Response.Write(tw.ToString())
Response.End()
Response.AddHeader("content-disposition", "attachment;filename=myfile.xls")<asp:datagrid id="DataGrid1" runat="server" Font-Names="宋体" Font-Size="9pt" Height="100%" Width="100%"
BorderStyle="None" BorderWidth="1px" BorderColor="#CC9966" BackColor="White" CellPadding="4">
<SelectedItemStyle Font-Bold="True" ForeColor="#663399" BackColor="#FFCC66"></SelectedItemStyle>
<AlternatingItemStyle BackColor="#FFCC99"></AlternatingItemStyle>
<ItemStyle BorderWidth="2px" ForeColor="#330099" BorderStyle="Solid" BorderColor="Black" BackColor="White"></ItemStyle>
<HeaderStyle Font-Bold="True" HorizontalAlign="Center" BorderWidth="2px" ForeColor="#FFFFCC"
BorderStyle="Solid" BorderColor="Black" BackColor="#990000"></HeaderStyle>
</asp:datagrid>
public override void VerifyRenderingInServerForm(Control control)
{
//base.VerifyRenderingInServerForm(control);
}
///隐藏部分列,不予导出
this.Gridview1.Columns[9].Visible = false;
this.Gridview1.Columns[8].Visible = false;
this.Gridview1.Columns[7].Visible = true;
///设置表头字体颜色
this.Gridview1.HeaderStyle.ForeColor = Color.Black;
///处理表头自动排序的超链接,导出后就没有表头的超链接
while (i < Gridview1.Columns.Count)
{
Gridview1.Columns[i].SortExpression = "";
i++;
}
还需要什么设置的话,可以自己试试;
另处好像还可以通过设置Excel模板的,没试过,你可以试试!