代码如下:
(1)Excel.aspx.cs private void Page_Load(object sender, System.EventArgs e)
{
//Session["DesignSearchSql"]是从另外一个页面穿过来的搜索语句,类似于 where province = '湖南' 
string searchSql = Session["DesignSearchSql"].ToString();  

string connStr = "server=localhost;database=mbo;uid=sa;pwd=;";
SqlConnection conn = new SqlConnection(connStr); StringBuilder sb = new StringBuilder(""); sb.Append(" SELECT * from title ");
sb.Append(searchSql);
String sqlStr = sb.ToString();
sb = null;

DataSet dsSearch = new DataSet();
SqlDataAdapter da = new SqlDataAdapter();
SqlCommand cmd = new SqlCommand(sqlStr, conn);
cmd.CommandType = CommandType.Text;
da.SelectCommand = cmd;
da.Fill(dsSearch, "titles"); DataGrid1.DataSource = dsSearch.Tables[0];
DataGrid1.DataBind(); conn.Close();
outExcel();
} private void outExcel()
{ string _strfile; System.IO.StringWriter uread = null;
System.Web.HttpResponse uresp = null;
System.Web.UI.HtmlTextWriter usend = null; _strfile = "Sheji.XLS"; uresp = this.Page.Response;
uresp.Clear();
uresp.Buffer = true;
uresp.Charset = "";
uresp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");    //解决中文乱码之关键
uresp.ContentType = "application/vnd.ms-excel";
this.Page.EnableViewState = false;

uread = new System.IO.StringWriter();
usend = new System.Web.UI.HtmlTextWriter(uread);
this.DataGrid1.RenderControl(usend);
uresp.AppendHeader("Content-Disposition", "attachment;filename=" + _strfile);
uresp.Write(uread.ToString());
uresp.End(); uread.Close();
usend.Close();
uread = null;
usend = null;
uresp = null;
}(2)Excel.aspx
<%@ Page language="c#" Codebehind="Excel.aspx.cs" AutoEventWireup="false" Inherits="Excel" %>
<%@ Register TagPrefix="igtbl" Namespace="Infragistics.WebUI.UltraWebGrid" Assembly="Infragistics.WebUI.UltraWebGrid.v2" %><form id="Form1" method="post" runat="server">
<asp:DataGrid id="DataGrid1" runat="server"></asp:DataGrid>&nbsp;
</form>有时候能够得到正确的excel文件
有时候excle中的中文全是乱码
实在不甚其烦
诸位请帮忙分析一下,可能是什么原因。

解决方案 »

  1.   

    Response.Clear(); 
    Response.Buffer= true; 
    Response.Charset="GB2312";    
    Response.AppendHeader("Content-Disposition","attachment;filename=FileName.xls"); 
    Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文
    Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。 
    this.EnableViewState = false;    
    System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN",true);
    System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad); 
    System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
    this.DataGrid1.RenderControl(oHtmlTextWriter); 
    Response.Write(oStringWriter.ToString());
    Response.End();
      

  2.   

    http://blog.csdn.net/goody9807/articles/138871.aspx
      

  3.   

    http://blog.csdn.net/littlehb/archive/2004/10/25/150635.aspx