public override void VerifyRenderingInServerF<wbr>orm(Control control)<br><wbr><wbr>{<br><wbr><wbr><wbr>//base.VerifyRenderingInServerF<wbr>orm (control);<br><wbr><wbr>}</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr></wbr>
<wbr></wbr>
public static void ExportToExcelForDataGrid<wbr>(DataGrid dg,string aDate,string aFileName)<br><wbr><wbr>{<br><wbr><wbr><wbr><wbr>HttpContext.Current.Response.Clear();<br><wbr><wbr><wbr>HttpContext.Current.Response.Buffer= true;<br><wbr><wbr><wbr>HttpContext.Current.Response.Charset="GB2312";<br><wbr><wbr><wbr>HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename="+ HttpUtility.UrlPathEncode(aFileName) +".xls");<br><wbr><wbr><wbr>HttpContext.Current.Response.ContentEncoding=System.Text.Encoding.GetEncoding("UTF-7");<wbr><wbr><br><wbr><wbr><wbr>HttpContext.Current.Response.ContentType = "application/ms-excel";<wbr><wbr><br><wbr><wbr><wbr><br><wbr><wbr><wbr>StringWriter oStringWriter = new System.IO.StringWriter();<br><wbr><wbr><wbr>HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);<br><wbr><wbr><wbr>dg.RenderControl(oHtmlTextWriter);<br><wbr><wbr><wbr><br><wbr><wbr><wbr>HttpContext.Current.Response.Write(oStringWriter.ToString());<br><wbr><wbr><wbr>HttpContext.Current.Response.End();<br><wbr><wbr>}</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
使用了AJAX的页面的GridView导出Excel,以及中文乱码问题解决<wbr><wbr></wbr></wbr>
2011-01-24 21:03:01|<wbr><wbr>分类:</wbr></wbr> .Net |<wbr><wbr>标签:</wbr></wbr> |字号大中小<wbr></wbr>订阅
<wbr></wbr>1.首先在需要导出Excel的页面的<%@ Page Title="" Language="C#" MasterPageFile="~Master.Master" CodeBehind="List.aspx.cs" Inherits="List" enableEventValidation<wbr><wbr> ="false"%>中加入enableEventValidation<wbr><wbr> ="false",这个很重要。</wbr></wbr></wbr></wbr>
2.在UpdatePannel中加入按钮的触发器<wbr><wbr></wbr></wbr>
</ContentTemplate><wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> <Triggers><wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> <asp:PostBackTrigger ControlID="export_excel" />//这里的ID指的是你单击导出Execel的控件,使这个控件回发。<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> </Triggers><wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> </asp:UpdatePanel><br> 3.<wbr><wbr>在按钮单击事件中写如下函数<wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr> protected void LinkButton2_Click(object sender, EventArgs e)<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr> {<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> GridView1.AllowPaging = false;<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> string strStyle = "<style>td{mso-number-format:"\\@";}</style>";<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> Response.Clear();<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> Response.Buffer = true;<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> Response.Charset = "GB2312";<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> Response.AppendHeader("Content-Disposition", "attachment;filename=" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls ");<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> Response.ContentType = "application/ms-excel ";<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> StringWriter oStringWriter = new StringWriter();<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> HtmlTextWriter oHtmlTextWriter = new HtmlTextWriter(oStringWriter);<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> this.GridView1.RenderControl(oHtmlTextWriter);<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> Response.Write(strStyle);<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> Response.Write(oStringWriter.ToString());<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> //ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "alert", "Response.Write(oStringWriter.ToString())", true);<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> Response.Flush();<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> Response.End();<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> GridView1.AllowPaging = true;<wbr><wbr><wbr><wbr><wbr><wbr><wbr> }</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> 问题:字符编码?用哪个?UTF-8、UTF-7、GB2312<wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
如果表中有中文,则推荐使用GB2312,Web.config中配置全球化:
<configuration>
<wbr><wbr><wbr> <system.web><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr> <compilation debug="true" targetFramework="4.0" /><br><wbr><wbr><wbr><wbr><wbr> <globalization requestEncoding="gb2312" responseEncoding="gb2312"/>//添加<br><wbr><wbr><wbr> </system.web></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
如果表中数字是以0开始的形如:08125...的话,使用string strStyle = "<style>td{mso-number-format:"\\@";}</style>";然后Response.Write(strStyle); 如上面代码中所示。
4.同样的在后台代码中写如下代码,这行代码是要确认运行时指定的服务器控件呈现,一定要添加
<wbr><wbr><wbr><wbr> public override void VerifyRenderingInServerF<wbr>orm(Control control)<br><wbr><wbr><wbr> {<br><wbr><wbr><wbr> }<br></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr></wbr>
<wbr></wbr>
==============合计
#region qzf2011-12-29 自动创建列绑定datagrid 的合计
<wbr><wbr>public static void DataGridItemDataBoundCal<wbr>cSumForAutoColumn(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e,ArrayList alSum)<br><wbr><wbr>{<br><wbr><wbr><wbr>if (e.Item.ItemType == ListItemType.Header)<br><wbr><wbr><wbr>{<br><wbr><wbr><wbr><wbr>for (int i = 0 ;i <e.Item.Cells.Count;i++)<br><wbr><wbr><wbr><wbr>{<br><wbr><wbr><wbr><wbr><wbr>alSum.Add(0M);<br><wbr><wbr><wbr><wbr>}<br><wbr><wbr><wbr>}<br><wbr><wbr><wbr>else if (e.Item.ItemType == ListItemType.Item ||<br><wbr><wbr><wbr><wbr>e.Item.ItemType == ListItemType.AlternatingItem)<br><wbr><wbr><wbr>{<br><wbr><wbr><wbr><wbr>for (int i = 0 ;i <e.Item.Cells.Count;i++)<br><wbr><wbr><wbr><wbr>{<br><wbr><wbr><wbr><wbr><wbr>Decimal dbl = 0M;<br><wbr><wbr><wbr><wbr><wbr>try<br><wbr><wbr><wbr><wbr><wbr>{<br><wbr><wbr><wbr><wbr><wbr><wbr>dbl = Decimal.Parse(e.Item.Cells[i].Text.Trim());<br><wbr><wbr><wbr><wbr><wbr>}<br><wbr><wbr><wbr><wbr><wbr>catch<br><wbr><wbr><wbr><wbr><wbr>{<br><wbr><wbr><wbr><wbr><wbr>}<br><wbr><wbr><wbr><wbr><wbr>alSum[i] = Convert.ToDecimal(alSum[i]) + dbl;<br><wbr><wbr><wbr><wbr>}<br><wbr><wbr><wbr>}<br><wbr><wbr><wbr>else if(e.Item.ItemType == ListItemType.Footer )<br><wbr><wbr><wbr>{<br><wbr><br><wbr><wbr><wbr><wbr>for (int i = 0 ;i <e.Item.Cells.Count;i++)<br><wbr><wbr><wbr><wbr>{<br><wbr><wbr><wbr><wbr><wbr>try<br><wbr><wbr><wbr><wbr><wbr>{<br><wbr><wbr><wbr><wbr><wbr><wbr>if (Convert.ToDecimal(alSum[i])==0) continue;<br><wbr><wbr><wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr>e.Item.Cells[i].Text = alSum[i].ToString();<br><wbr><wbr><wbr><wbr><wbr>}<br><wbr><wbr><wbr><wbr><wbr>catch<br><wbr><wbr><wbr><wbr><wbr>{<br><wbr><wbr><wbr><wbr><wbr>}<br><wbr><wbr><wbr><wbr>}<br><wbr><wbr><wbr>}<br><wbr><wbr>}<br><wbr><wbr>#endregion<br><wbr>}<br> }</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>