浏览器下载Excel,直接打开显示乱码...
Posted C#
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浏览器下载Excel,直接打开显示乱码...相关的知识,希望对你有一定的参考价值。
情景:
浏览器中点击下载文件有两个选项:[打开][下载] [打开]之后,提示["文件.xlsx"的文件格式和扩展名不匹配。文件可能已损坏或不安全。除非您信任其来源,否则请勿打开。是否仍要打开它?],点击[是],看到Excel乱码.. [下载]之后,再打开,会提示[发现"文件.xlsx"中的部分内容有问题。是否让我们尽量尝试恢复?如果您信任工作簿的源,请单击"是"] 扩展:工作簿的"源",是将"文件.xlsx",改后缀为"文件.zip"然后看到里面的xml(sharedStrings.xml) ?
x
原来代码以及下载情景:
byte[] streamData = 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,直接打开显示乱码...的主要内容,如果未能解决你的问题,请参考以下文章