首页 > 代码库 > 浏览器下载Excel,直接打开显示乱码...
浏览器下载Excel,直接打开显示乱码...
情景:
浏览器中点击下载文件有两个选项:[打开][下载] [打开]之后,提示["文件.xlsx"的文件格式和扩展名不匹配。文件可能已损坏或不安全。除非您信任其来源,否则请勿打开。是否仍要打开它?],点击[是],看到Excel乱码.. [下载]之后,再打开,会提示[发现"文件.xlsx"中的部分内容有问题。是否让我们尽量尝试恢复?如果您信任工作簿的源,请单击"是"] 扩展:工作簿的"源",是将"文件.xlsx",改后缀为"文件.zip"然后看到里面的xml(sharedStrings.xml) ?
x
原来代码以及下载情景:
byte[] streamData = http://www.mamicode.com/getByte("file.xlsx"); Response.Charset = "UTF-8"; Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8"); Response.ContentType = "application/vnd.ms-excel"; Response.AddHeader("Content-Disposition", string.Format("attachment,filename={0}", out_file_name)); Response.AddHeader("Content-Length", streamData.LongLength.ToString()); Response.BinaryWrite(streamData); Response.Flush(); Response.End();
更改后代码及情景:
Response.Charset = "UTF-8"; Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8"); Response.ContentType = "application/octet-stream";//改动 Response.AddHeader("Content-Disposition", string.Format("attachment,filename={0}", out_file_name)); Response.AddHeader("Content-Length", streamData.LongLength.ToString()); Response.BinaryWrite(streamData); Response.Flush(); Response.End();
小结:
x
本地Excel版本是2016
x
可能,Excel2007的版本不存在这个问题吧...
x
猜测:本地安装的Excel版本和生成的Excel版本不同,下载到本地之后,本地可以修复打开不乱码,但是直接打开不会修复,就乱码了...
浏览器下载Excel,直接打开显示乱码...
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。