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

  • 相关阅读:
    [年报阅读] 中国银行业监督管理委员会2009年报(1)
    囧事
    [论文收集] 2009年|国内计算机方向三大学报|Web Service相关论文
    打开那扇窗
    初生牛犊不怕虎
    忘却的纪念
    Java JDBC学习
    Java数组学习
    如何清晰地思考:近一年来业余阅读的关于思维方面的知识结构整理(附大幅思维导图)
    管理类文件
  • 原文地址:https://www.cnblogs.com/love-zf/p/6731552.html
Copyright © 2011-2022 走看看