浏览器下载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版本不同,下载到本地之后,本地可以修复打开不乱码,但是直接打开不会修复,就乱码了...

posted @   zh89233  阅读(11137)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示