【经验分享】解决Excel中乱码问题
#region 导出至Excel
protected void btnExport_Click(object sender, EventArgs e)
{
//取得数据
DataTable dtExportItemLy = null;
string where = ” 1 =1 “;
DataSet ds = DalHelper.Logic_Performance_Area.GetExportList(where);
ds.Tables[0].DefaultView.Sort = “C11_9”;
ds.Tables[0].Columns.Add(“OrderId”);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
int k = ds.Tables[0].Rows.Count – i;
ds.Tables[0].Rows[i][“OrderId”] = k.ToString();
}
ds.Tables[0].DefaultView.Sort = “OrderId Asc”;
//年度
DataTable tempdt = new DataTable();
DataColumn tempdc1 = new DataColumn(“Year”);
tempdt.Columns.Add(tempdc1);
//排名
DataColumn tempdc2 = new DataColumn(“OrderId”);
tempdt.Columns.Add(tempdc2);
//企业名称
DataColumn tempdc3 = new DataColumn(“Enterprise_Name”);
tempdt.Columns.Add(tempdc3);
//得分
DataColumn tempdc4 = new DataColumn(“C11_9”);
tempdt.Columns.Add(tempdc4);
//制表人
DataColumn tempdc5 = new DataColumn(“CommitMan”);
tempdt.Columns.Add(tempdc5);
//提交时间
DataColumn tempdc6 = new DataColumn(“CommitDate”);
tempdt.Columns.Add(tempdc6);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
DataRow tempdr = tempdt.NewRow();
tempdr[“Year”] = ds.Tables[0].Rows[i][“Year”].ToString();
tempdr[“OrderId”] = ds.Tables[0].Rows[i][“OrderId”].ToString();
tempdr[“Enterprise_Name”] = ds.Tables[0].Rows[i][“Enterprise_Name”].ToString();
tempdr[“C11_9”] = ds.Tables[0].Rows[i][“C11_9”].ToString();
tempdr[“CommitMan”] = ds.Tables[0].Rows[i][“CommitMan”].ToString();
tempdr[“CommitDate”] = ds.Tables[0].Rows[i][“CommitDate”].ToString();
tempdt.Rows.Add(tempdr);
}
dtExportItemLy = tempdt;
if (dtExportItemLy == null) return;
if (dtExportItemLy.Rows.Count <= 0)
{
AlertShow(this.Page, “暂无数据可以导出!”);
return;
}
try
{
dtExportItemLy.Columns[0].ColumnName = “年度”;
dtExportItemLy.Columns[1].ColumnName = “排名”;
dtExportItemLy.Columns[2].ColumnName = “企业名称”;
dtExportItemLy.Columns[3].ColumnName = “得分”;
dtExportItemLy.Columns[4].ColumnName = “制表人”;
dtExportItemLy.Columns[5].ColumnName = “提交时间”;
this.CreateExcel(dtExportItemLy, “区域审核排名”);
Response.Buffer = true;
Response.Clear();
Response.Flush();
AlertShow(this.Page, “导出成功!”);
}
catch (Exception ex)
{
AlertShow(this.Page, “” + ex.Message + “导出失败!”);
return;
}
finally
{
Response.End();
}
}
public void CreateExcel(DataTable dt, string FileName)
{
System.Web.UI.WebControls.DataGrid m_Datagrid = new DataGrid();
m_Datagrid.DataSource = dt;
m_Datagrid.DataBind();
Response.Clear();
Response.Buffer = true;
Response.ContentEncoding = System.Text.Encoding.GetEncoding(“GB2312”);
Response.AppendHeader(“content-disposition”,”attachment;filename=\”” + System.Web.HttpUtility.UrlEncode(“中文名称”,System.Text.Encoding.UTF8) + “.xls\””);
Response.ContentEncoding = System.Text.Encoding.GetEncoding(“utf-8”);
Response.ContentType = “application/ms-excel”;//设置输出文件类型为excel文件。
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
m_Datagrid.RenderControl(oHtmlTextWriter);
Response.Output.Write(oStringWriter.ToString());
Response.Flush();
Response.End();
}
public override void VerifyRenderingInServerForm(Control control)
{ }
#endregion