导出文件
.xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
但是下载下来的 xlsx 文件提示格式已损坏,但是把后缀名改成xls 就可以打开
请问有人遇到过嘛?
解决了
现在贴出代码
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;
}
文件名和application/***都只是附属,后者只是告诉浏览器应该如何处理http的response的数据(下载,还是直接浏览器直接打开,还是使用os的某个程序打开)。
改成xls就可以打开,那就说明你的导出的代码生成的文件就只是xls而已。
现在是新增的需求(用的是原来的导出Excel方法),有几个测试人员说,测试的是否有这个问题
但是原来使用这个方法导的xlsx 是没有这个问题的, 今天我跟测试的人员说了下,明天叫她在上线环境试试看,(ps:导出方法都没有改过)