首页 新闻 搜索 专区 学院

页面导出已经使用xlsx导出头了,还是打不开

0
[已解决问题] 解决于 2020-04-17 14:56

导出文件

.xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
但是下载下来的 xlsx 文件提示格式已损坏,但是把后缀名改成xls 就可以打开
请问有人遇到过嘛?

Cgrain的主页 Cgrain | 小虾三级 | 园豆:1096
提问于:2020-04-16 15:00
< >
分享
最佳答案
0

解决了
现在贴出代码

  public static void ExportToDownLoad(byte[] data, string filename)
        {
            GSPCore.Common.CommonBLL.GetContextType(System.IO.Path.GetExtension(filename)); 
            System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" 
             + System.Web.HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8)); 
            //这里就是 读取什么类型 
             //文件返回什么响应头
            System.Web.HttpContext.Current.Response.BinaryWrite(data);
            System.Web.HttpContext.Current.Response.Flush();
            System.Web.HttpContext.Current.Response.End();
        }

这样子的话,调用需要改动


  using (MemoryStream ms = new MemoryStream())
   { 
      xlsBK.Save(ms, FileFormatType.Excel2007Xlsx);//默认支持xls版,需要修改指定版本-->就是这句话
       ExportToDownLoad(ms.ToArray(), exlname);
       xlsBK = null;  
   }
Cgrain | 小虾三级 |园豆:1096 | 2020-04-17 14:54
其他回答(1)
0

文件名和application/***都只是附属,后者只是告诉浏览器应该如何处理http的response的数据(下载,还是直接浏览器直接打开,还是使用os的某个程序打开)。

改成xls就可以打开,那就说明你的导出的代码生成的文件就只是xls而已。

blackheart | 园豆:3464 (老鸟四级) | 2020-04-16 18:04

现在是新增的需求(用的是原来的导出Excel方法),有几个测试人员说,测试的是否有这个问题
但是原来使用这个方法导的xlsx 是没有这个问题的, 今天我跟测试的人员说了下,明天叫她在上线环境试试看,(ps:导出方法都没有改过)

支持(0) 反对(0) Cgrain | 园豆:1096 (小虾三级) | 2020-04-16 21:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册