把一个dataset里面的多个datatable导出到一个Excel中的多个Sheet。时而乱码,时而不乱码;时而页面自动关闭,时而不关闭。未发现规律。乱码时服务器上的文件是没有问题的(是先把Excel文件保存到服务器端的一个文件夹下再输出给用户),只是下载之后再打开有问题,感觉是把前台aspx文件输出到了Excel,如图所示:
而服务器上的文件或者说正常情况却是:
把文件输出到前台的代码如下:
protected static void SaveXls(string fileURL)
{
System.IO.FileInfo fileInfo = new System.IO.FileInfo(fileURL);
System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.Charset = "GB2312";
System.Web.HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
System.Web.HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=" + System.Web.HttpContext.Current.Server.UrlEncode(fileInfo.Name.ToString()));
System.Web.HttpContext.Current.Response.AddHeader("content-length", fileInfo.Length.ToString());
System.Web.HttpContext.Current.Response.ContentType = "application/octet-stream";
System.Web.HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Default;
System.Web.HttpContext.Current.Response.WriteFile(fileURL);
//System.Web.HttpContext.Current.Response.Flush();
//System.Web.HttpContext.Current.Response.End();
}
就是这样,求大神解救。
问题已解决,在writefile之前暂停线程1s即可。
怎么个全法?
你是说把这句
System.Web.HttpContext.Current.Response.WriteFile(fileURL);
改成这句?
System.Web.HttpContext.Current.Response.Redirect(fileURL);
貌似不行啊。
HttpResponse 和System.Web.HttpContext.Current.Response 是两个不同的类
本回答被网友采纳