如题,导出Gridview到Excel,无法解决汉字文件名传递的问题,请指教,函数如下:
其中,
1、string FileName只能为英文,怎样为汉字?
2、Response.ContentType = FileType;好像没用?去掉也可以导出,private void Export(string FileType, string FileName)
{
Response.Clear();
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
Response.Charset = "gb2312"; //必须写,否则会有乱码
Response.ContentEncoding = System.Text.Encoding.UTF7; //必须写,否则会有乱码
Response.ContentType = FileType;
System.IO.StringWriter stringWrite = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite); GridViewInfo.AllowPaging = false;
//BindData();不分页后绑定数据刷新
GridViewInfo.RenderControl(htmlWrite);
Response.Write(stringWrite.ToString());
Response.End();
GridViewInfo.AllowPaging = true;
//BindData(); //重新绑定数据
}
其中,
1、string FileName只能为英文,怎样为汉字?
2、Response.ContentType = FileType;好像没用?去掉也可以导出,private void Export(string FileType, string FileName)
{
Response.Clear();
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
Response.Charset = "gb2312"; //必须写,否则会有乱码
Response.ContentEncoding = System.Text.Encoding.UTF7; //必须写,否则会有乱码
Response.ContentType = FileType;
System.IO.StringWriter stringWrite = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite); GridViewInfo.AllowPaging = false;
//BindData();不分页后绑定数据刷新
GridViewInfo.RenderControl(htmlWrite);
Response.Write(stringWrite.ToString());
Response.End();
GridViewInfo.AllowPaging = true;
//BindData(); //重新绑定数据
}
Sub toExcel(ByVal p_dt As DataTable) Dim mydg As New DataGrid
mydg.DataSource = p_dt
mydg.DataBind()
Response.AppendHeader("Content-Disposition", "attachment;filename=E:\Excel.xls")
Response.ContentEncoding = System.Text.Encoding.UTF8
Response.ContentType = "application/vnd.ms-excel"
Response.Charset = "GB2312"
Me.EnableViewState = False
Dim tw As New System.IO.StringWriter
Dim hw As New System.Web.UI.HtmlTextWriter(tw)
mydg.RenderControl(hw)
Response.Write(tw.ToString())
Response.End() End Sub
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
//不是导出的excel文件名乱码是你自己把文件名编码了,是你用UrlEncode把文件名编码了
用HttpUtility.UrlDecode把文件名解码即可
Response.ContentEncoding = System.Text.Encoding.UTF7;
Response.ContentType = "application/ms-excel";
ie page 格式得要是 utf-8
meta data里设置 utf-8
//不是导出的excel文件名乱码是你自己把文件名编码了,是你用UrlEncode把文件名编码了
用HttpUtility.UrlDecode把文件名解码即可这个用了。解决问题。感谢4楼的oo_2008。