C#下载office .xlsx文件后打不开,改为.xls可以打开,有没有办法解决

时间:2021-05-06 05:51:33
curContext.Response.AddHeader("content-disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8) + ".xlsx");
curContext.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
curContext.Response.ContentEncoding = System.Text.Encoding.UTF8;
curContext.Response.Charset = "GB2312";
strWriter = new StringWriter();
htmlWriter = new HtmlTextWriter(strWriter);
dgExport = new GridView();
dgExport.DataSource = dtData.DefaultView;
dgExport.AllowPaging = false;
dgExport.DataBind();
dgExport.RenderControl(htmlWriter);
curContext.Response.Write(strWriter.ToString().ToCharArray(), 0, strWriter.ToString().ToCharArray().Length);
curContext.Response.End();

4 个解决方案

#1


推测可能是生成Excel文件的时候是按照xls格式生成的,所以输出按照xlsx就无法打开

#2


那就修改成xls下载被 对你来说 直接删除一个代码就行了.

并且来说 你是下载  当然是越低越好了..

另外来说. 你这方式早多少年前就没人用了.

除了基本的"table" 啥也不行. 现在最起码的 也得上npoi啊..

#3


你电脑的office 版本太低了 只支持.xls 格式
.xlsx格式是高版本的 office 2007版以后的扩展名才是.xlsx

和你代码没关系

#4


个人思路是在下载的时候加入一个office版本的判断,然后根据不同的版本实现保存方式

#1


推测可能是生成Excel文件的时候是按照xls格式生成的,所以输出按照xlsx就无法打开

#2


那就修改成xls下载被 对你来说 直接删除一个代码就行了.

并且来说 你是下载  当然是越低越好了..

另外来说. 你这方式早多少年前就没人用了.

除了基本的"table" 啥也不行. 现在最起码的 也得上npoi啊..

#3


你电脑的office 版本太低了 只支持.xls 格式
.xlsx格式是高版本的 office 2007版以后的扩展名才是.xlsx

和你代码没关系

#4


个人思路是在下载的时候加入一个office版本的判断,然后根据不同的版本实现保存方式