项目场景:
提示:这里简述项目相关背景:
.NET 开发
C#
问题描述
用NPOI导出xlsx格式的Excel时,打开导出的Excel遇到“部分内容有问题”的报错
原因分析:
写入时使用的方法不对
失败案例:
byte[] datas = file.GetBuffer();
解决方案:
也有说添加ContentType 的长度的,如Response.AddHeader(“Content-Length”, fileSize.ToString()); 但我试的时候没用。最后还是把byte[] datas = file.GetBuffer();改成byte[] datas = file.ToArray();才没报错。
提示:解决代码如下
MemoryStream file = new MemoryStream();
xSSFWorkbook.Write(file);
byte[] datas = file.ToArray();//使用GetBuffer()方法在打开Excel的时候会出错。
long fileSize = datas.Length;
String fileName=" 123";
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.AddHeader("Content-Disposition",string.Format("attachment;filename={0}.xlsx", fileName));
Response.AddHeader("Content-Length", fileSize.ToString());
Response.AddHeader("Content-Transfer-Encoding", "binary");
//Response.ContentType = "application/octet-stream";
Response.ContentType = "application/vnd.ms-excel";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
Response.BinaryWrite(datas);
Response.Flush();
Response.End();