asp.net c# datatable导出到Excel乱码 10
把一个dataset里面的多个datatable导出到一个Excel中的多个Sheet。时而乱码,时而不乱码;时而页面自动关闭,时而不关闭。未发现规律。乱码时服务器上的文...
把一个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即可。 展开
而服务器上的文件或者说正常情况却是:
把文件输出到前台的代码如下:
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即可。 展开
2个回答
展开全部
1你下载的时候是否使用了迅雷软件,去除浏览器关联
2 你数据库文件是否进行了XML或调用office SDK进行了编辑
3 你客户端office是否安装了加密软件
4 fileURL是否正确,端口号是否冲突,如不是使用默认80端口,需要将URL打全
2 你数据库文件是否进行了XML或调用office SDK进行了编辑
3 你客户端office是否安装了加密软件
4 fileURL是否正确,端口号是否冲突,如不是使用默认80端口,需要将URL打全
追问
怎么个全法?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
尝试通过这种方式来传回前台
HttpResponse.Redirect("~/DownLoadFile/xxx.xlsx" )
这样就是直接下载服务器文件了
HttpResponse.Redirect("~/DownLoadFile/xxx.xlsx" )
这样就是直接下载服务器文件了
追问
你是说把这句
System.Web.HttpContext.Current.Response.WriteFile(fileURL);
改成这句?
System.Web.HttpContext.Current.Response.Redirect(fileURL);
貌似不行啊。
追答
HttpResponse 和System.Web.HttpContext.Current.Response 是两个不同的类
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询